2016-06-06 9 views
0

나는 stackoverflow에 대한 다른 많은 질문을 보았지만 여전히 혼란 스럽다.MailKit을 사용하여 메시지 당 첨부 파일을 여러 개 다운로드하는 방법은 무엇입니까?

내가하지만 이메일 ONE 첨부 파일을 가지고있는 경우에만, 나는이 작업을 수행 할 성공적으로 수 있었다 emails-의 첨부 파일을 다운로드 할; 이메일에 첨부 파일이 두 개 이상 있으면 작동을 멈 춥니 다.

어떻게 이메일에 여러 첨부 파일을 다운로드합니까? 또한

, 다운로드 할 때 파일 확장자를 결정하는 방법은 무엇입니까? 현재 예를 들어 pdf 첨부 파일이있는 경우 파일을 다운로드하지만 .pdf가 없으므로 windows는 파일 유형을 알 수 없습니다. 아래

코드는 여기에서있다 : MailKit save Attachments. 나는 내 코드를 근거로 삼았다.

foreach (var attachment in message.Attachments) 
{ 
    using (var stream = File.Create ("fileName")) 
    { 
     if (attachment is MessagePart) 
     { 
      var part = (MessagePart) attachment; 
      part.Message.WriteTo (stream); 
     } 
     else 
     { 
      var part = (MimePart) attachment; 
      part.ContentObject.DecodeTo (stream); 
     } 
    } 
} 

도와주세요! 감사!

답변

1

붙여 넣은 코드는 이미 모든 첨부 파일을 저장합니다.

원본 메시지 원본을 확인하십시오. 첨부 파일로 간주되는 각 "첨부 파일"에 머리글 Content-Disposition: attachment이 있습니까? 그렇지 않다면, 그것은 당신이 치는 문제입니다.

대신 message.BodyParts를 사용하고 일부는 당신이 "첨부 파일"로 간주 것이 무엇인지 확인하기 위해 자신의 논리를 적용 할 수 있습니다.

또한 다운로드 할 때 파일 확장명을 결정하는 방법이 있습니까? 현재 예를 들어 pdf 첨부 파일이있는 경우 파일을 다운로드하지만 .pdf가 없으므로 windows는 파일 유형을 알 수 없습니다.

예. MimePart 개체의 FileName 속성에서 파일 확장명을 확인할 수 있습니다.

+0

문제가 정확히 무엇인지 - 감사합니다! 전자 메일 본문을 통해 들어 왔기 때문에 첨부 파일을 "첨부 파일"로 인식하지 못했습니다 (따라서 'Content-Disposition : attachment' heaer가 없었습니다). 따라서'message.BodyParts '는 필자가 필요로하는 것입니다. 도와 주셔서 감사합니다. – coltonhurst