当附件是电子邮件时,我可以简单地获取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 附件,Nullable1 bodyType, IEnumerable
1个附加属性, ServiceErrorHandling errorHandling) 在Microsoft.Exchange.WebServices.Data.ExchangeService.GetAttachment(附件 附件,Nullable1 bodyType, IEnumerable
1附加属性) 在Microsoft.Exchange.WebServices.Data.Attachment.InternalLoad(Nullable1 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:
下载和保存联系人附件的正确方法是什么?
答案 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);
我希望这些信息有所帮助。如果这确实解决了您的问题,请将帖子标记为已回答。
谢谢,
---鲍勃---