2013-08-03 1 views
4

mailcore에서 mailcore2으로 마이그레이션하려고했습니다. 이전 mailcore에서 본문 구조를 가져 오는 작업은 [msg fetchBodyStructure]처럼 간단했습니다. 여기서 msg는 CTCoreMessage 개체입니다.mailcore2에서 이메일 본문을 가져 오는 방법

mailcore2를 사용하면 상황이 더 복잡해 보입니다. 메시지 본문을 가져 오는에 대한 MCOIMAPSession's 문서에서, 우리는이 :

MCOIMAPFetchContentOperation * op = 
    [session fetchMessageAttachmentByUIDOperationWithFolder:@"INBOX" 
                 uid:[message uid] 
                partID:"1.2" 
                encoding:[part encoding]]; 
[op start:^(NSError * error, NSData * partData) { 
}]; 

나는 절대적으로이 1.2가 참조하도록되어 무엇인지 전혀 모른다. 저자는 사용자를 RFC 822, RFC 2822RFC 5322이라고 말하지만 위의 내용에 대한 직접적인 대답은 없습니다.

전체 메시지 본문을 가져 오는 간단한 코드 샘플을 보여줄 수 있습니까?

+0

어떻게 갈 빈의 대답에 정답을 변경하는 방법에 대한? – TJez

+1

좋은 지적이 이루어졌습니다 – abbood

답변

14

잘 모르겠어요 : 이 당신이 MailCore2와 이메일 본문을 가져 오는 방법은 다음과 같습니다

MCOIMAPSession *session = [[MCOIMAPSession alloc] init]; 
    [session setHostname:@"imap.gmail.com"]; 
    [session setPort:993]; 
    [session setUsername:[UICKeyChainStore stringForKey:@"username"]]; 
    [session setPassword:[UICKeyChainStore stringForKey:@"password"]]; 
    [session setConnectionType:MCOConnectionTypeTLS]; 
    MCOIMAPFetchContentOperation *operation = [session fetchMessageByUIDOperationWithFolder:@"INBOX" uid:message.uid]; 

    [operation start:^(NSError *error, NSData *data) { 
     MCOMessageParser *messageParser = [[MCOMessageParser alloc] initWithData:data]; 

     NSString *msgHTMLBody = [messageParser htmlBodyRendering]; 
     [webView loadHTMLString:msgHTMLBody baseURL:nil]; 
    }]; 
+0

이 코드는 "시작하기"가이드에 포함되어 있다고 생각할 것입니다. 감사. – TJez

+0

마지막 줄은 [webView.mainFrame loadHTMLString : msgHTMLBody baseURL : nil]이어야합니다. – Mutahhir

0

RFC 3501, 6.4.5 부분 - 가져 오기 명령, 특히 BODY[<section>]이 필요합니다. 숫자는 메시지의 MIME 구조 세그먼트를 나타냅니다.

예를 들어, 메시지 구조는이 같은 일반적인 형식 보이는 마임 경우 :

multipart/alternative 
|- text/plain 
\- text/html 

부품 및 하위 부분은 재귀 적으로 다음과 같이 번호가 매겨집니다 : 더 복잡한 형식

multipart/alternative (top-level) 
|- text/plain (Part 1) 
\- text/html (Part 2) 

을, 예 : 첨부 파일이있는 경우 :

multipart/mixed (top-level) 
|- multipart/alternative (Part 1) 
| |- text/plain (Part 1.1) 
| \- text/html (Part 1.2) 
\- image/jpeg (Part 2) 

전체 메시지가 필요한 경우 부품 번호는 일반적으로 비어 있습니다. 또는 전체 메시지를 원하지만 헤더가 필요없는 경우 TEXT을 사용할 수 있습니다. 사람들이 일을 복잡하게하는 이유

+0

우수! 전자 메일 요약 또는 전체 전자 메일을 가져 오지 않고 사서함에 표시하기 위해 본문의 처음 세 줄과 같은 것을 가져 오는 방법이 있습니까? – abbood

+0

mailcore는 말할 수 없지만 프로토콜 수준에서 일단 'BODYSTRUCTURE'를 얻으면 본문으로 간주되는 부분을 식별 할 수 있으므로 부분 가져 오기를 사용하여 첫 번째 kb를 잡을 수 있습니다 귀하의 도서관이 그것을 지원한다면. 'BODY [] <2048>'프로토콜을 사용합니다. 나는 이것이 얼마나 광범위하게 지원되는지 확신하지 못한다. – Max

+0

질문은 MailCore API 사용에 관한 질문이었습니다. 이 대답은 나와 관련이 없습니다. – TJez