2014-04-22 3 views
3

MailKit라는 IMAP4 클라이언트를 사용하고 있습니다.메시지에 첨부 파일이 있는지 확인하는 방법 (MailKit)

잘 작동하지만 메시지에 첨부 파일이 있는지 여부는 문제가 있습니다.

이 나는 ​​시도했다 : 컨텐츠 처분 입니다 :

var summary = inbox.Fetch(MessageId,MessageSummaryItems.Body,cancel.Token).FirstOrDefault(); 
var bodyMultiPart = summary.Body as BodyPartMultipart; 
if (bodyMultiPart != null) 
{ 
    foreach (var bodyPart in bodyMultiPart.BodyParts.Where(x => x is BodyPartBasic)) 
    { 
     BodyPartBasic basicPart = bodyPart as BodyPartBasic; 
     if (basicPart.ContentDisposition != null && basicPart.ContentDisposition.IsAttachment) 
     { 
      //add basic part as attachment 
     }    
    }  
} 

그러나 일부 메시지 (첨부 파일로 PDF를 가지고 메시지 예를 들어)

.

답변

0

콘텐츠 처리가 null 인 경우 콘텐츠 유형을 힌트로 사용할 수 있습니다. text/*는 거의 첨부 파일이 아니며 multipart/*는 힌트가 아니며 일반적으로 첨부 파일에 대한 힌트가 아닙니다.

PDF는 application/pdf이므로이 발견법에 따른 첨부 파일입니다.

+0

도움을 주셔서 감사합니다 :) –

+0

일반적으로 첨부 파일의 값이 "Content"인 Content-Disposition 헤더가 있거나 클라이언트 자체에서 파트 콘텐츠를 렌더링하는 방법을 모르는 경우가 아니면 첨부 파일로 간주되지 않습니다 . – jstedfast

1

MessageSummaryItems.Body 대신 MessageSummaryItems.BodyStructure를 사용해보십시오.

BODYSTRUCTURE는 BODY보다 각 신체 부위에 대한 자세한 내용을 검색합니다. Content-Disposition 헤더는 BODYSTRUCTURE가 일반 BODY보다 검색하는 추가 항목 중 하나라고 생각합니다.

희망이 있습니다.

+0

나는 이것을 시도했지만 여전히 모든 메시지에 대해 작동하지 않습니다. –

+0

어떤 방식으로 작동하지 않습니까? 무엇을 당신이 위에서 붙여 넣은 논리를 통해 첨부 파일로 간주되지 않는 첨부 파일로 간주되어야한다고 생각합니까? – jstedfast

+0

첨부 파일이있는 것으로 간주되는 PDF 파일 첨부 메시지가 있습니다. MessageSummaryItems.BodyStructure의 동작이 일관되지 않습니다. –

관련 문제