Outlook邮件应用程序c#

时间:2015-11-17 14:58:58

标签: c# email outlook

我使用一个非常简单的代码在我的c#应用程序中使用outlook生成电子邮件。当Outlook已经打开时,它工作正常。(即使它要求允许打开电子邮件。但在我授予访问权限后,将打开一个新的Outlook消息窗口,其中包含生成的电子邮件)。但真正的问题是,如果未打开Outlook,应用程序会在行

崩溃
Microsoft.Office.Interop.Outlook.Recipient oTORecipt = oMsg.Recipients.Add(email);
  

错误:在Birthday_Mailing.dll中发生了'System.Runtime.InteropServices.COMException'类型的异常(第一次机会)。

     

附加信息:已停止的操作(HRESULT异常:0x80004004(E_ABORT))

     

如果处理程序可用于此异常,程序可以继续安全运行。

我的整个代码可以在下面看到

public void SendMail(string email, string name)
    {
        //// Create the Outlook application by using inline initialization.
        Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
        ////Create the new message by using the simplest approach.
        Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

        Microsoft.Office.Interop.Outlook.Recipient oTORecipt = oMsg.Recipients.Add(email); //oRecips.Add(t);
        oTORecipt.Type = (int)Microsoft.Office.Interop.Outlook.OlMailRecipientType.olTo;
        oTORecipt.Resolve();

        oMsg.Subject = "Herzlichen Glückwunsch";
            oMsg.HTMLBody = "<html>" +
                "<head>" +
                "<title>Happy Birthday</title>" +
                "</head>" +
                "<body style='background-color:#E6E6E6;'>" +SelectImage+
                "<div style='font-family: Georgia, Arial; font-size:14px; '>Liebe/r " + " " +
                name + ",<br /><br />" +
                "alles Gute zum <b>Geburtstag!</b>  Wir wünschen einen schönen Tag  und für das kommende Jahr Gesundheit, Glück und Erfolg." +
                 "<br /><br /><br /><br /><br />" +
                "Mit den besten Grüßen,<br />" +
                "XXYYZZ" +
                "</div>" +
                "</body>" +
                "</html>";
            oMsg.Save();
            oMsg.Display();

            oMsg = null;
            oApp = null;

我不是编码方面的专家。有人可以帮我找到实际问题所在吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

Microsoft.Office.Interop.Outlook.Inspector oInspector = oMsg.GetInspector;

我在声明了解决问题的oMsg对象后添加了这一行。但仍然在消息窗口打开之前,Outlook要求用户显示电子邮件的权限。

***但我不会将此标记为答案,因为这不是您可以为此问题提供的最佳解决方案。

更新:我发现上述问题是由于我们服务器中的某些安全系统造成的。这是正确的答案。感谢@MikeMiller显示正确的路径