我正在尝试使用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))'
答案 0 :(得分:0)
您似乎遇到了Outlook安全问题。在此上下文中的“安全性”是指所谓的“对象模型防护”,它触发安全提示并阻止对某些功能的访问,以防止恶意程序从Outlook数据中收集电子邮件地址并使用Outlook传播病毒和垃圾邮件。
有一些方法可以避免此类问题:
在Outlook "Object Model Guard" Security Issues for Developers文章中了解有关所有这些选项和其他方式的详情。
答案 1 :(得分:0)
代码没有多大意义 - 您正在无模式地显示消息,因此Display立即返回,然后在用户有机会在屏幕上看到任何内容之前调用Send。您是否希望用户单击“发送”按钮?在这种情况下,只需调用Display,让用户完成剩下的工作 - 没有理由调用Send。