我有一个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);
}
}
答案 0 :(得分:2)
如果您的send()
方法没有发送任何错误或异常,那么您很可能无法检测是否存在任何错误/异常(至少来自您的代码)
将邮件移至Outlook服务器后,您无法检查状态。您必须依靠Outlook服务器发送电子邮件。
您可以参考Jeff Atwood的这篇文章:So You'd Like to Send Some Email