检测“Office.Interop.Outlook”何时不发送邮件

时间:2016-01-27 12:56:40

标签: 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);
    }
}

1 个答案:

答案 0 :(得分:2)

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

将邮件移至Outlook服务器后,您无法检查状态。您必须依靠Outlook服务器发送电子邮件。

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