我正在为outlook 2013开发一个Addin。这是一个示例项目,我想要做的是从mailitem中删除所有附件。我就是这样做的
while (mail.Attachments.Count > 0)
{
try
{
mail.Attachments.Remove(1);
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
编辑:我也试过用倒置删除它们的方法
for loop(for i = mail.Attachments.Count; i > 1; i--
)但结果相同
它的工作正常,除了它在控制台上抛出此异常的事实:
抛出异常:PCMailAddIn.dll中的'System.Runtime.InteropServices.COMException'
抛出异常:mscorlib.dll中的'System.Reflection.TargetInvocationException'
答案 0 :(得分:0)
// 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);
}
}
答案 1 :(得分:0)
您可以访问每个附件,然后删除该索引处的对象。试试这个: //删除所有附件 var attachments = mailItem.Attachments.Cast()。ToList(); if(attachments.Any()) { attachments.Reverse(); attachments.ForEach(att =&gt; mailItem.Attachments.Remove(att.Index)); }