如何更新MailItem的HTMLBody
本文关键字:MailItem HTMLBody 更新 何更新 | 更新日期: 2023-09-27 18:18:22
我正在尝试从模板创建outlook邮件,稍微编辑一下,然后显示给用户,以便他可以发送该邮件。
在创建邮件和显示邮件时没有问题。但是,当我试图读取(或编辑)邮件的HTMLBody有一个错误:
下面是我的代码:操作中止(Exception from 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)
{
...
}
var app = new Outlook.Application();
在创建Outlook Application类的新实例之前,我建议检查它是否已经运行,然后获取正在运行的实例:
if (Process.GetProcessesByName("OUTLOOK").Any())
app = System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");
Outlook是单例的。您不能同时运行多个实例。
我还建议在访问HTMLBody属性值之前保存新创建的项目:
Outlook.MailItem mailItem = app.CreateItemFromTemplate("C:''Test''template.oft");
mailIte.Save();
var body = mailItem.HTMLBody; //Here is the exception
最后,Display方法不接受MailItem实例。相反,你可以传递true来让检查器显示为一个模态窗口,或者省略这个参数(默认使用false)。
顺便说一句,你在哪里和什么时候运行代码?