2014-04-06 1 views
0

나는 MailKit라는 IMAP4 클라이언트를 사용하고 있습니다. 위대한 작품이지만 첨부 파일을 다운로드하지 않고 본문을 가져 오는 데 문제가 있습니다. 나는 메일의 본문 텍스트와 첨부 파일이 무엇인지 보여주고 싶습니다. 하지만 사용자가 실제로 첨부 파일을 다운로드하려는 첨부 파일을 클릭하는 경우에만 표시합니다.첨부 파일을 다운로드하지 않고 메시지 본문을 얻는 방법

var message = inbox.GetMessage(uid, cancel.Token); 

그러나 이것은 전체 메시지를 가져옵니다

은 내가 시도했습니다.

uids[0] = uid; 
var ms = inbox.Fetch(uids, MessageSummaryItems.BodyStructure , cancel.Token); 
var bp1 = inbox.GetBodyPart(uid, ms.First().Body, cancel.Token); 

을하지만 다시는 첨부 파일을 다운로드 :

도 시도했다.

+0

그럴듯 해 보입니다. 실제 IMAP 명령은 무엇입니까? – arnt

+0

자신의 포럼에서 특정 라이브러리 (MailKit)에 대한 지원을 요청해야하는 것 같습니다. –

답변

2

 a1 uid fetch <uid> (body.peek[text]) 

, 당신은 전체 메시지를 다운로드 할 수 있습니다.

MIME은 "본문 부분"의 트리 구조입니다. 원하는 부분을 찾기 위해 ms.First(). Body를 트래버스 한 다음 GetBodyPart() 메서드를 사용하여 개별적으로 다운로드합니다.

MailKit.BodyPartMultipart, MailKit.BodyPartMessage, MailKit.BodyPartBasic 및 MailKit.BodyPartText를 살펴보십시오.

BodyPartMultipart에는 다른 본문 부분이 포함되어 있습니다.

BodyPartMessage 파트에는 메시지 (본문 파트 포함)가 포함되어 있습니다.

BodyPartBasic은 기본 리프 노드 본문 부분으로, 일반적으로 "첨부 파일"입니다.

BodyPartText는 텍스트 부분 (BodyPartBasic의 하위 클래스)으로 첨부 된 텍스트 부분이거나 메시지의 주 텍스트로 간주 될 수 있습니다. BodyPartBasic는 이것을를 만들기 위해 IsAttachment 전화에

if (part.ContentDisposition != null && part.ContentDisposition.IsAttachment) 
    // it is an attachment 
else 
    // it is meant to be shown to the user as part of the message 
    // (if it is an image, it is meant to be displayed with the text) 

아마 편의 속성을 추가해야하십시오 BodyPartBasic가 인라인 또는 첨부 파일로 표시하기위한 것입니다 경우

은 당신이해야 할 것은, 파악하려면 조금 더 간단합니다 (오늘 추가하려고합니다).

희망이 있습니다.

업데이트 : 이제 BodyPartBasic.IsAttachment 편의 속성을 git master에 추가 했으므로 MailKit의 다음 릴리스에 포함될 예정입니다.

+0

위대한, 당신의 도움을 주셔서 감사합니다 –

+0

당신은 오신 것을 환영합니다! BTW, 나는 또한 당신이 git master에서 headersOnly를 원한다면 지정할 수있는 기능을 추가했다. – jstedfast

0

이 IMAP 명령은 텍스트 본문 만 반환합니다. 당신이 메시지의 최상위 신체 일부를 요청하기 때문에 샘플 코드와 -Rick

관련 문제