如何从EWS获取电子邮件时获取MimeContent?

问题描述:

我在我的应用程序中使用EWS服务。在我想要获取现有电子邮件,然后将其转换为文件。我为此使用以下代码。如何从EWS获取电子邮件时获取MimeContent?

private ExchangeService _service = null; 

internal EWSClient() 
{ 
    _service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    _service.Credentials = new WebCredentials(HandlerSettings.MailReceiverLogin, HandlerSettings.MailReceiverPassword); 
    _service.Url = new Uri(HandlerSettings.MailReceiverServer); 
} 

取电子邮件我使用绑定方法。

var completeEmailMessage = EmailMessage.Bind(_service, emailId); 
var mimeContent = completeEmailMessage.MimeContent; 
string tempFile = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".eml"); 
using (var fileStream = new FileStream(tempFile, FileMode.Create)) 
{ 
     fileStream.Write(mimeContent.Content, 0, mimeContent.Content.Length); 
} 

在这里,我得到异常completeEmailMessage.MimeContent;一片空白。

我应该使用哪种方法来获取具有MimeContent的完整电子邮件?

您应该创建一个属性集,并添加MIMEContent作为属性加载然后指定为绑定如过载性能

 PropertySet psPropSet = new PropertySet(BasePropertySet.FirstClassProperties); 
     psPropSet.Add(ItemSchema.MimeContent); 
     var completeEmailMessage = EmailMessage.Bind(_service, emailId, psPropSet); 
     var mimeContent = completeEmailMessage.MimeContent; 
     string tempFile = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".eml"); 
     using (var fileStream = new FileStream(tempFile, FileMode.Create)) 
     { 
      fileStream.Write(mimeContent.Content, 0, mimeContent.Content.Length); 
     }