c# - "Office.Interop.Outlook"不发送邮件时检测

标签 c# outlook interop office-interop com-interop

我有一个 C# 程序来发送邮件。 很少有过程调用 mailItem.send() 没有错误,但 Outlook 不发送邮件,并且邮件不是在 Outlook“发送”文件夹中创建的。

如何检测?

代码如下:

private void sendMail(String mail, String description)
{

    RegistryKey key = Registry.ClassesRoot;
    RegistryKey subKey = key.OpenSubKey("Outlook.Application");

    if (subKey != null)
    {


        if ((Process.GetProcessesByName("Outlook").Length == 0) && (Process.GetProcessesByName("Outlook.exe").Length == 0))
        {
            System.Diagnostics.Process.Start("Outlook");
        }


        Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
        Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
        mailItem.Subject = "Release Notice";
        mailItem.To = mail;

        String bodyMessage = description;

        mailItem.Body = bodyMessage;

        mailItem.Display(false);
        mailItem.Send();

    }
    else
    {
        MessageBox.Show("Impossible to send mails. Contact system administrator.", "System Info", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

最佳答案

如果您的 send() 方法没有发送任何错误或异常,那么您很可能无法检测到是否存在任何错误/异常(至少从您的代码中 )

一旦您的邮件被移动到 Outlook 服务器,您就无法检查状态。您必须依靠 Outlook 服务器来发送您的电子邮件。

您可以引用 Jeff Atwood 的这篇文章:So You'd Like to Send Some Email

关于c# - "Office.Interop.Outlook"不发送邮件时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038026/

相关文章:

c# - SetParent Hook ,如何解钩?

c# - Unity XCode iOS 在启动时崩溃

c++ - 互操作程序集引用了 .NET Framework 的哪些功能?

c# - 如何在 C# 中应用 Word Quick Style - 不仅仅是简单的格式而是整个样式?

c# - Outlook邮件转pdf安全提示

.net - 如何以编程方式判断word文档是否已损坏?

c# - 如何在 C#.net 的不同机器上的两个独立的 winform 应用程序之间传递值

c# - 为什么 JIT_MethodAccessAllowedBySecurity 花费这么多时间?

html - 什么是 outlook 电子邮件中的 margin-bottom 的替代品

python - 在 python 脚本中使用 Pywin32 和 outlook 发送自动电子邮件是有效的,但是当通过 Windows 任务计划程序自动发送电子邮件时不起作用