繁体   English   中英

使用vsto从Outlook Mailitem中删除附件

[英]Delete attachments from outlook mailitem using vsto

我正在为Outlook 2013开发一个Addin。这是一个示例项目,我要做的是从mailitem中删除所有附件。 这就是我的方法

while (mail.Attachments.Count > 0)
 {
    try
    {
      mail.Attachments.Remove(1);
     }
       catch(Exception e)
     {
        MessageBox.Show(e.Message);
     }

 }

编辑 :我也尝试过用反向for循环删除它们的方法( for i = mail.Attachments.Count; i > 1; i-- ),但是得到了相同的结果

它工作正常,除了它在控制台上抛出此异常:

抛出异常:PCMailAddIn.dll中的“ System.Runtime.InteropServices.COMException”

引发异常:mscorlib.dll中的“ System.Reflection.TargetInvocationException”

// Remove all attachments

var allIndexesList = mailItem.Attachments.Cast<Outlook.Attachment>().ToList();

var descIndexes = allIndexesList.Select(a => a.Index).OrderByDescending(i => i).ToArray();


foreach(var i in indexes)
{
    try
    {
        mailItem.Attachments.Remove(i);
    }
    catch (COMException e)
    {
        MessageBox.Show(e.Message);
    }
}

您可以访问每个附件,然后删除该索引处的对象。 试试这个://删除所有附件var attachments = mailItem.Attachments.Cast()。ToList(); 如果(attachments.Any()){attachments.Reverse(); attachments.ForEach(att => mailItem.Attachments.Remove(att.Index)); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM