Удалить вложения из сообщения электронной почты с помощью веб-служб Exchange - PullRequest
0 голосов
/ 20 декабря 2018

У меня следующая проблема.Я хотел бы удалить вложения из электронных писем.Пока это нормальное письмо с вложениями, это не проблема.Но если электронное письмо теперь находится в электронном письме, то я не могу удалить вложения.Я всегда получаю сообщение «хотя бы одно вложение не может быть удалено».

У кого-нибудь есть идеи?Я работаю с версией 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);
            }
        }
    }

1 Ответ

0 голосов
/ 20 декабря 2018

Попробуйте это:

EmailMessage message = EmailMessage.Bind(service, Id, new PropertySet(ItemSchema.Attachments));

    foreach (Attachment attachment in message.Attachments)
    {
            message.Attachments.Remove(attachment);
            break;
    }
    message.Update(ConflictResolutionMode.AlwaysOverwrite);
...