我试图从模板中创建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上添加了示例项目。
发布于 2015-10-20 07:11:04
var app = new Outlook.Application();在创建Outlook应用程序类的新实例之前,我建议检查它是否已经运行,然后获取正在运行的实例:
if (Process.GetProcessesByName("OUTLOOK").Any())
app = System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");展望是单身。不能同时运行多个实例。
此外,我建议在访问HTMLBody属性值之前保存新创建的项:
Outlook.MailItem mailItem = app.CreateItemFromTemplate("C:\\Test\\template.oft");
mailIte.Save();
var body = mailItem.HTMLBody; //Here is the exception最后,显示方法不接受MailItem实例。相反,您可以传递true使检查器显示为模态窗口,或者省略参数(默认情况下使用false)。
顺便问一下,你是在何时何地运行代码的?
https://stackoverflow.com/questions/33229226
复制相似问题