0

我正在尝试从我的 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 属性。有任何想法吗?

4

3 回答 3

3

您需要调用该MailItem.Send方法:

mailItem.Send();
于 2013-09-30T10:00:47.107 回答
0

尝试使用 Namespace.SyncObjects 集合或 Namespace.SendAndReceive 方法开始同步。

请注意,消息提交是一个异步过程,因此您需要保留对 Namespace 对象和 SyncObject(如果您正在使用它)的引用,直到实际发送消息。

于 2013-09-30T14:48:17.197 回答
0

检查此答案以获取类似问题 - 它包含您不必使用的解决方案

Thread.Sleep(5000)
于 2014-01-29T15:04:56.103 回答