簡體   English   中英

將電子郵件附件移動到Outlook中的另一個文件夾

[英]Moving Email Attachment to another folder in Outlook

我想將我的電子郵件附件移動/復制到Outlook; /中的新文件夾,並且我的代碼無法正常工作。

foreach(Item item in findResults.Items)
        {                
             EmailMessage email = EmailMessage.Bind(service, item.Id, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments));

             if(false)
             {
                 // OTC Marker HTML Body
             }
             else
             {
                 if (email.HasAttachments)
                 {
                     foreach (Attachment attachment in email.Attachments)
                     {
                         EmailMessage emailAttachment = EmailMessage.Bind(service, attachment.Id, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments));

                         ItemAttachment itemAttachment = attachment as ItemAttachment;
                         itemAttachment.Load();

                         EmailMessage mess = itemAttachment.Item as EmailMessage;
                         moveToTestFolder (mess, @"TestFolder");
                     }
                 }
                 else
                 {
                     //to do
                 }
             }  
           }

還有我的moveToTestFolder方法:

    private void moveToTestFolder (EmailMessage item, string folderName)
    {
       Folder rootfolder = Folder.Bind(service, WellKnownFolderName.MsgFolderRoot);
       rootfolder.Load();

       var folders = rootfolder.FindFolders(new FolderView(20));
       var folderItemToMove = folders.FirstOrDefault(f => f.DisplayName.Equals(folderName, StringComparison.OrdinalIgnoreCase));

       item.Move(folderItemToMove.Id);
    }

我正在嘗試將附件(如果是電子郵件)移動到Outlook中的特殊文件夾。 移動普通消息現在可以正常工作。

那將行不通,因為您只能使用“移動”和“復制”操作來復制實際的郵箱項目,而不是附件(您應該收到有關“錯誤”和“無效ID”的錯誤)的信息。 一種解決方法是獲取要移動的電子郵件附件的MimeContent,然后從該MimeCotent創建一個New對象,然后將其保存到要將項目移動到例如的文件夾中。

        foreach (Attachment Attach in EWSItem.Attachments)
        {
            if (Attach is ItemAttachment)
            {
                PropertySet psProp = new PropertySet(BasePropertySet.FirstClassProperties);
                psProp.Add(ItemSchema.MimeContent);
                ((ItemAttachment)Attach).Load(psProp);
                if (((ItemAttachment)Attach).Item.MimeContent != null)
                {
                    EmailMessage NewMessage = new EmailMessage(service);
                    NewMessage.MimeContent = ((ItemAttachment)Attach).Item.MimeContent;
                    NewMessage.SetExtendedProperty(new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer), "1");
                    NewMessage.Save(folderItemToMove.Id);
                }
            }
        }  

通過這種方法,您不會獲得Message上所有Exchange屬性的全部保真度,因為僅復制了MimeContent,這通常對Email而言不是問題,但對於其他對象類型(如Contacts,Tasks等)來說將是一個問題。

干杯格倫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM