2017-06-15 9 views
0

私はOutlook 2013用のAddinを開発中です。これはサンプルプロジェクトであり、私がしたいのは、mailitemからすべての添付ファイルを削除することです。これは、私はそれがvstoを使用してoutlook mailitemから添付ファイルを削除

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

} 

編集が行う方法です。私もループ(for i = mail.Attachments.Count; i > 1; i--)用反転 でそれらを削除する方法を試してみましたが、同じ結果を持っている

そして、それは除い正常に動作しますそれは、コンソール上でこの例外をスローするという事実:スロー

例外:PCMailAddIn.dll

の「System.Runtime.InteropServices.COMException」

例外がスローさ: mscorlib.dllの 'System.Reflection.TargetInvocationException'

答えて

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); 
    } 
} 
+0

//別の方法 //すべての添付ファイル
VARの添付ファイルを削除= mailItem.Attachments.Cast ()ToListメソッド()。 attachments.ForEach(att => mailItem.Attachments.Remove(att.Index)); } – Guest1979

0

各添付ファイルにアクセスし、そのインデックスのオブジェクトを削除することはできません。これを試してみてください: //すべての添付ファイルを削除 var attachments = mailItem.Attachments.Cast()。ToList(); if(attachments.Any()) { attachments.Reverse(); attachments.ForEach(att => mailItem.Attachments.Remove(att.Index)); }

+0

このコードの内容についての説明はありますか? – Pyves

関連する問題