2011-04-04 66 views
1

我知道使用mailto鏈接可以打開您的defautl郵件客戶端並填充主題和標題。我需要做類似的事情,但也要附上一份文件。.NET在Office 2010中創建帶有附件的電子郵件

我的所有用戶都將使用Outlook 2010,並將其設置爲默認郵件客戶端。它只需要爲這種情況工作。

如何創建一個打開Outlook新消息窗口並填充附件字段的電子郵件?

回答

1

你需要到Outlook COM庫的引用,那麼這樣的事情應該工作:

/// <summary> 
    /// Get Application Object 
    /// </summary> 
    public static OL.Application Application 
    { 
     get 
     { 
      try 
      { 
       return Marshal.GetActiveObject("Outlook.Application") as OL.Application; 
      } 
      catch (COMException) 
      { 
       return new OL.Application(); 
      } 
     } 
    } 

    /// <summary> 
    /// Prepare An Email In Outlook 
    /// </summary> 
    /// <param name="ToAddress"></param> 
    /// <param name="Subject"></param> 
    /// <param name="Body"></param> 
    /// <param name="Attachment"></param> 
    public static void CreateEmail(string ToAddress, string Subject, string Body, string AttachmentFileName) 
    { 
     //Create an instance of Outlook (or use existing instance if it already exists 
     var olApp = Application; 

     // Create a mail item 
     var olMail = olApp.CreateItem(OL.OlItemType.olMailItem) as OL.MailItem; 
     olMail.Subject = Subject; 
     olMail.To = ToAddress; 

     // Set Body 
     olMail.Body = Body; 

     // Add Attachment 
     string name = System.IO.Path.GetFileName(AttachmentFileName); 
     olMail.Attachments.Add(AttachmentFileName, OL.OlAttachmentType.olByValue, 1, name); 

     // Display Mail Window 
     olMail.Display(); 
    } 

對於這個工作,你還需要:

using System.Runtime.InteropServices; 
using OL = Microsoft.Office.Interop.Outlook; 
+0

難道我只是需要參考Office和Outlook Object庫的? – Alice 2011-04-04 13:08:23

+0

我不斷收到'對象'不包含'To'的定義,並且沒有可以找到接受類型'object'的第一個參數的擴展方法'To'(你是否缺少using指令或程序集引用?認爲參考是錯誤的。 – Alice 2011-04-04 13:15:56

+0

我使用VS2010與.Net 4,這使得olMail項目成爲一個動態的對象,因此它的工作。我將更新代碼,以便將olMail轉換爲適當的類型。 – JDunkerley 2011-04-05 15:40:42