簡體   English   中英

使用Outlook.Application C#發送郵件

[英]Sending mail with Outlook.Application C#

我正在嘗試從我的c#.net應用程序發送郵件,我使用了以下代碼:

var mailItem = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    mailItem.Subject = "Error Report from user: " + AuthenticationManager.LoggedInUserName;
    mailItem.HTMLBody = "Test email\n"+ReadSignature();
    mailItem.To = "test@test.com";
    mailItem.Display(true);

郵件不會發送,而是添加到發件箱文件夾中。 我懷疑由於Outlook未啟動而未發送郵件。 所以我用谷歌搜索並提出了這個:

        var oApp = new Outlook.Application();

        Microsoft.Office.Interop.Outlook.NameSpace ns = oApp.GetNamespace("MAPI");
        var f = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

        Thread.Sleep(5000); // a bit of startup grace time.

        var mailItem = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
        mailItem.Subject = "Error Report from user: " + AuthenticationManager.LoggedInUserName;
        mailItem.HTMLBody = "Test email\n"+ReadSignature();
        mailItem.To = "test@test.com";

        mailItem.Display(true);

但是,它再次出現在發件箱文件夾中。 我需要啟動Outlook,因為我不能在每個單個客戶端application.config中指定FromMail屬性。 有任何想法嗎?

您需要調用MailItem.Send方法:

mailItem.Send();

嘗試使用Namespace.SyncObjects集合或Namespace.SendAndReceive方法來啟動同步。

請注意,消息提交是異步過程,因此您需要保留對Namespace對象和SyncObject的引用(如果正在使用它),直到實際發送消息為止。

檢查此答案是否有類似問題-它包含無需使用的解決方案

Thread.Sleep(5000)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM