【发布时间】:2017-10-11 08:44:12
【问题描述】:
我正在尝试使用 C# 控制台应用程序发送一封自动电子邮件。我正在使用 Outlook 互操作来执行此操作。当我运行下面的代码时,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 可能需要一段时间才能准备好
-
似乎可以发送了。我在 Send() 之前放入了 Thread.Sleep(1000) ,但它没有帮助。到达 Send() 时仍然抛出错误
-
1 秒的睡眠时间不是很长 - 如果你告诉它等待 60000 是出于兴趣,它会起作用吗?
-
不,不幸的是,这似乎无助于解决问题
-
那么它会建议outlook需要登录