C#VSTO Outlook - 选择多个项目并将其作为附件发送

时间:2016-06-21 03:43:01

标签: c# vsto outlook-addin

如何选择多个项目并打开新的邮件表单,并将所有选定的项目作为附件添加到新电子邮件中,以便我可以将它们与新电子邮件一起发送?

我想,这可以分解为:

  1. 如何在outlook中获取多个所选项目(假设用户在按住Ctrl键的同时选择所有项目进行多项选择)?

  2. 如何在Outlook中打开新电子邮件表单?

  3. 如何在上面的1中附加所选项目并将其作为附件添加到新电子邮件中?

  4. 更新: 到目前为止,我已经设法做了以下(感谢德米特里的评论):

    public void SendSelectedMailsAsAttachment()
    {
        try
        {
            Selection olSelection = HostAddIn.ActiveExplorer.Selection;
            var count = olSelection.Count;
            var items = new List<IItem>();
    
            Microsoft.Office.Interop.Outlook.MailItem oMailItem = HostAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            oMailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
    
            foreach (var sel in olSelection)
            {
                oMailItem.Attachments.Add(sel);
            }
            oMailItem.Display(false);
        }  
        catch (Exception ex)
        {
            //ex message
        }
    }
    

    但是使用此代码,会发生以下情况:

    1. 如果我选择单个电子邮件并尝试将其作为附件发送,则上面的代码执行得很好,新的电子邮件表单会打开,但不会显示任何附件。

    2. 如果我选择多封电子邮件并尝试将其作为附件发送,则上述代码会在第二次调用oMailItem.Attachments.Add(sel)时抛出异常,但异常为“This operation is not supported until the entire message is downloaded. Download the message and try again.

      < / LI>

1 个答案:

答案 0 :(得分:0)

  1. Application.ActiveExplorer.Selection collection
  2. Application.CreateItem / MailItem.Display
  3. 循环浏览Application.ActiveExplorer.Selection集合中的项目,并为每个项目调用MailItem.Attachments.Add