2017-04-16 8 views
0

다음 코드를 사용하여 Message-Id로 ​​메일 항목을 가져 오려고합니다.Mailkit을 사용하여 Message-ID로 Yahoo 메일을 가져올 수 없음

 var messageId = messageIdStringValue.DecryptFromBase64(); 
      var newId = "<" + messageId + ">"; 
     var matches = Client.Inbox.Search(SearchQuery.HeaderContains("Message-ID", newId)); 
     foreach (var uid in matches) 
     { 

      var message = Client.Inbox.GetMessage(uid); 

     } 
가 야후 우편으로 보냈다고에 대한 결과가 내가 모든 메일 항목을 얻을 수 있음을 언급해서는 안하지만 문제는 내가 뭔가 잘못하고 단일 message.Am를 가져 오는에 의해 그것은 Gmail에서 잘 일하고

?

답변

1

감사합니다. @jstedfast 덕분에 메일 항목을 검색하는 가장 좋은 방법은 Message-ID가 아닌 UniqueId가 검색 명령으로 다른 서버에서 결과를 반환하지 않을 수 있다는 것입니다. 다음 코드는 모든 서버에서 정상적으로 작동합니다.

foreach (var item in Client.Inbox.Fetch(new[] { uId }, MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure)) 
     { 
      var message = Client.Inbox.GetMessage(item.UniqueId) 
     } 
0

다른 IMAP 서버는 SEARCH를 다르게 구현합니다.

그렇다면 왜 base64에서 message-id 값을 디코딩하고 있습니까? 그건 말이되지 않습니다.

+0

Base64는 암호화가 아니기 때문에 인코딩입니다. – Max

+0

다른 서버는 다르지만'SEARCH HEADER MESSAGE-ID '할 수 없다는 것이 현저합니다. 'messageIdStringValue'에 문제가 있는지 궁금하지 마십시오. – arnt

+0

그래, 나도 놀랐다. 나는 어떤 구현이 <>을 좋아하지 않는다고 들었지만, 나는 그 기억에 자신이 없다고 들었다. – jstedfast