У меня следующая проблема.Я хотел бы удалить вложения из электронных писем.Пока это нормальное письмо с вложениями, это не проблема.Но если электронное письмо теперь находится в электронном письме, то я не могу удалить вложения.Я всегда получаю сообщение «хотя бы одно вложение не может быть удалено».
У кого-нибудь есть идеи?Я работаю с версией 2 веб-служб Exchange.
private void workEmail(EmailMessage rootMailMessage, EmailMessage subMailMessage, string filePath, int index)
{
EmailMessage eMessageToWork = null;
if (subMailMessage == null)
{
eMessageToWork = rootMailMessage;
}
else
{
eMessageToWork = subMailMessage;
}
for (int i = eMessageToWork.Attachments.Count; i-- > 0; )
{
Microsoft.Exchange.WebServices.Data.Attachment rootAttachment = eMessageToWork.Attachments[i];
if (rootAttachment is FileAttachment)
{
// For now, just .odt files are not supported and it throws an exception if theres any unsupported fileextension
checkFileTypeSupported(rootAttachment.Name);
string strType = Path.GetExtension(rootAttachment.Name);
// check if it is any type of supported image or pdf file
if (checkForImageOrPdfAttachment(strType))
{
// just save the image to temp folder
string subAttRootFileName = saveImageFileAttachment(rootAttachment, index, filePath);
// remove attachment
eMessageToWork.Attachments.Remove(rootAttachment);
// save the updated mail
rootMailMessage.Update(ConflictResolutionMode.AlwaysOverwrite);
}
continue;
}
else // Attachment is an item attachment.
{
// convert attachment to itemattachment
ItemAttachment itmAttach = rootAttachment as ItemAttachment;
// save this item-attachment
// Load Item with additionalProperties of MimeContent
itmAttach.Load(EmailMessageSchema.MimeContent);
// convert the itemattachment to a emailmessage
EmailMessage ebMessage = itmAttach.Item as EmailMessage;
// recursive call for possible attachments in this emailmessage
this.workEmail(rootMailMessage, ebMessage, filePath, index + 1);
// remove the attached mailitem from parent mail
rootMailMessage.Attachments.Remove(rootAttachment);
// update parent mail
rootMailMessage.Update(ConflictResolutionMode.AlwaysOverwrite);
}
}
}