如何使用EWS API下载电子邮件中附带的联系人?

时间:2014-04-03 12:31:14

标签: exchange-server exchangewebservices exchange-server-2010

当附件是电子邮件时,我可以简单地获取mime内容并保存。但是当附件是Contact时,我无法获得MimeContent。这是代码

itemAttachment.Load(new PropertySet(ItemSchema.MimeContent)); MimeContent mc = itemAttachment.Item.MimeContent; //Convert it to bytes byte[] contentBytes = mc.Content;

当附件被联系时,我正处于异常

之下
  

发生了Microsoft.Exchange.WebServices.Data.ServiceResponseException   HResult = -2146233088消息=不支持MIME转换   此项目类型。 Source = Microsoft.Exchange.WebServices StackTrace:          在Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary()          在Microsoft.Exchange.WebServices.Data.ServiceResponse.ThrowIfNecessary()          在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalGetAttachments(IEnumerable 1   附件,Nullable 1 bodyType, IEnumerable 1个附加属性,   ServiceErrorHandling errorHandling)          在Microsoft.Exchange.WebServices.Data.ExchangeService.GetAttachment(附件   附件,Nullable 1 bodyType, IEnumerable 1附加属性)          在Microsoft.Exchange.WebServices.Data.Attachment.InternalLoad(Nullable 1 bodyType, IEnumerable 1 additionalProperties)          在Microsoft.Exchange.WebServices.Data.ItemAttachment.Load(IEnumerable`1   additionalProperties)          在Presensoft.JournalEmailVerification.EmailVerification.DownloadFailedAttachments(EmailMessage)   msg,JournalEmail journalEmail)在C:\ Users \ sameer \ Presensoft \ Email中   归档\ Presensoft.JournalEmailVerification \ EmailVerification.cs:行   605 InnerException:

下载和保存联系人附件的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在Exchange中保存为联系人

在联系人上使用MimeContent不起作用,因为服务器不支持转换。您可以为联系人获取MimeContent,但您无法将MimeContent保存为联系人。

不幸的是,没有简单的方法来保存附加的联系人。我建议手动克隆联系人。使用EWS托管API,您可以将ItemAttachment作为联系人访问。然后,您需要在服务器上创建新联系人,使用TryGetProperty()将附加联系人的所有属性复制到新联系人,然后保存新联系人。

我知道在访问ItemAttachment时,只需在联系人对象上使用保存方法即可。问题是对象上有一个只读属性 IsAttachment ,它被设置为true并且不允许保存对象。如果您尝试,将会得到一个例外,即此方法不适用于附件。

另存为.vcf文件

如果您尝试将联系人保存到本地文件系统,则只需要几行代码。

itemAttachment.Load(ItemSchema.MimeContent);
File.WriteAllBytes("Contact.vcf", itemAttachment.Item.MimeContent.Content);

我希望这些信息有所帮助。如果这确实解决了您的问题,请将帖子标记为已回答。

谢谢,

---鲍勃---