【问题标题】:Sending mail with Outlook.Application C#使用 Outlook.Application C# 发送邮件
【发布时间】:2013-10-06 03:27:38
【问题描述】:

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

【问题讨论】:

  • 如果您使用的是 Web 应用程序,那么您可以从 web.config 文件中的邮件进行配置
  • 您真的需要这种矫枉过正的手段来发送简单的电子邮件吗?有些类允许在没有 Outlook 的情况下直接发送邮件。

标签: c# email outlook


【解决方案1】:

检查this answer 是否有类似问题 - 它包含您不必使用的解决方案

Thread.Sleep(5000)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你需要调用MailItem.Send方法:

      mailItem.Send();
      

      【讨论】:

      • 不起作用,邮件仍然在 Outlook 中的我的发件箱文件夹中。
      • @TobiasMoeThorstensen 可能已达到允许的收件箱大小。如果在有足够空间可用之前,电子邮件将转到发件箱,您检查了吗?
      • @AccessDenied 否。但我通过启动 Outlook 进程然后打开创建邮件对话框来修复它。
      • @TobiasMoeThorstensen 很棒!
      • 尝试使用 Namespace.SyncObjects 集合或 Namespace.SendAndReceive 方法开始同步。请注意,消息提交是一个异步过程,因此您需要保留对 Namespace 对象和 SyncObject(如果您正在使用它)的引用,直到消息实际发送为止。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2014-09-09
      • 2017-06-26
      • 2012-02-25
      • 2012-05-01
      • 2010-10-01
      相关资源
      最近更新 更多