[英]Outlook Interop Throws Error “Exception from HRESULT: 0x80004004 (E_ABORT)” When Sending Email
我正在尝试使用C#控制台应用程序发送自动电子邮件。 我正在使用Outlook Interop来做到这一点。 当我运行下面的代码时,Outlook已打开。 该代码实际上产生了电子邮件,当代码在mailItem.Send()上停止时,该电子邮件处于打开状态。 我怀疑问题与我的笔记本电脑上的某些访问策略有关,但是任何指导都将有所帮助。
public static void SendEmail(string Body, string Subject, string Recipients)
{
Outlook.Application app = new Outlook.Application();
Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.Subject = Subject;
mailItem.To = Recipients;
mailItem.HTMLBody = Body;
mailItem.Display(false);
mailItem.Send();
}
完全错误:
System.Runtime.InteropServices.COMException: 'Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))'
看起来您已经遇到了Outlook安全问题。 在本文中,“安全性”是指所谓的“对象模型防护”,它触发安全提示并阻止对某些功能的访问,以防止恶意程序从Outlook数据中获取电子邮件地址并使用Outlook传播病毒和垃圾邮件。
有一些方法可以避免此类问题:
在开发人员的Outlook“对象模型保护”安全问题文章中,了解有关所有这些选项和其他方式的更多信息。
该代码实际上没有多大意义-您以无模式显示消息,因此Display立即返回,然后在用户有机会在屏幕上看到任何内容之前调用Send。 是否要用户单击“发送”按钮? 在这种情况下,只需致电Display,然后让用户完成其余工作-没有理由致电Send。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.