我正在尝试从模板创建Outlook邮件,稍微编辑它们然后向用户显示,以便他可以发送该邮件。
创建邮件并显示邮件没有问题。但是,当我试图阅读(或编辑)邮件的HTMLBody时,出现错误:
操作已中止(HRESULT异常:0x80004004(E_ABORT))
这是我的代码:
using Outlook = Microsoft.Office.Interop.Outlook;
...
try
{
var app = new Outlook.Application();
Outlook.MailItem mailItem = app.CreateItemFromTemplate("C:\\Test\\template.oft");
var body = mailItem.HTMLBody; //Here is the exception
mailItem.HTMLBody = body.Replace("@firstname", "Test Testy");
mailItem.To = message.EmailAddress;
mailItem.Display(mailItem);
}
catch (Exception ex)
{
...
}
在github上添加了示例项目。
答案 0 :(得分:0)
var app = new Outlook.Application();
在创建Outlook Application类的新实例之前,我建议检查它是否已经运行并获取正在运行的实例:
if (Process.GetProcessesByName("OUTLOOK").Any())
app = System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");
Outlook是一个单身人士。您无法同时运行多个实例。
此外,我建议在访问HTMLBody属性值之前保存newvly创建的项目:
Outlook.MailItem mailItem = app.CreateItemFromTemplate("C:\\Test\\template.oft");
mailIte.Save();
var body = mailItem.HTMLBody; //Here is the exception
最后,Display方法没有采用MailItem实例。相反,您可以传递true以将检查器显示为模态窗口,或者只省略参数(默认情况下使用false)。
BTW你在何时何地运行代码?