2015-05-06 145 views
0

我正在使用Outlook.Application和Outlook.MailItem對象在我的C#桌面應用程序中打開Outlook。雖然當我向自己發送郵件時,我的Outlook未顯示附件,但我收到帶有附件的郵件。但是在發送郵件之前(outlook打開時)不顯示。我使用Outlook 2007的下面是我的代碼:Outlook未顯示附件

Outlook.Application oApp = new Outlook.Application(); 
Outlook.NameSpace oNS = oApp.GetNamespace("mapi"); 
// Log on by using a dialog box to choose the profile. 
oNS.Logon(Missing.Value, Missing.Value, true, true); 


// Create a new mail item. 
     Outlook.MailItem oMsg =   (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
...... 
//Check if we need to add attachments 
if (_files.Count > 0) 
{ 
    foreach (string attachment in _files) 
    { 
      oMsg.Attachments.Add(attachment,Outlook.OlAttachmentType.olByValue,null,null); 
    } 
} 

oMsg.Save(); 
oMsg.Display(false); 
+0

這將是很好的格式,這更清楚。我會自己做,但編輯按鈕變灰。 –

+0

代碼現在已格式化。謝謝。 – Awadesh

+0

我能夠通過將附件行替換爲以下來解決上述問題:oMsg.Attachments.Add(attachment,Outlook.OlAttachmentType.olByValue,Type.Missing,Type.Missing); – Awadesh

回答

0

當然,Type.Missing用於省略該參數,並使用COM的默認值加載項。

此外,我會建議打破調用鏈並聲明每個屬性或方法調用在單獨的代碼行上。它將允許立即釋放每個底層的COM對象。使用System.Runtime.InteropServices.Marshal.ReleaseComObject在完成使用後釋放Outlook對象。如果您的加載項嘗試枚舉存儲在Microsoft Exchange Server上的集合中的超過256個Outlook項目,這一點尤其重要。如果您沒有及時釋放這些物品,您可以達到Exchange對任何時候打開的物品的最大數量施加的限制。然後在Visual Basic中將變量設置爲Nothing(C#中的空值)以釋放對該對象的引用。您可以在MSDN的Systematically Releasing Objects文章中閱讀更多。