首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新HTMLBody的MailItem

如何更新HTMLBody的MailItem
EN

Stack Overflow用户
提问于 2015-10-20 06:10:30
回答 1查看 1.4K关注 0票数 0

我试图从模板中创建outlook邮件,稍加编辑,然后显示给用户,这样他就可以发送邮件了。

在创建和显示邮件时没有问题。但是,当我试图读取(或编辑)邮件的HTMLBody时,出现了一个错误:

操作中止( HRESULT: 0x80004004 (E_ABORT)例外)

这是我的代码:

代码语言:javascript
复制
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上添加了示例项目。

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 07:11:04

代码语言:javascript
复制
var app = new Outlook.Application();

在创建Outlook应用程序类的新实例之前,我建议检查它是否已经运行,然后获取正在运行的实例:

代码语言:javascript
复制
if (Process.GetProcessesByName("OUTLOOK").Any())
   app = System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");

展望是单身。不能同时运行多个实例。

此外,我建议在访问HTMLBody属性值之前保存新创建的项:

代码语言:javascript
复制
 Outlook.MailItem mailItem = app.CreateItemFromTemplate("C:\\Test\\template.oft");
mailIte.Save();
var body = mailItem.HTMLBody; //Here is the exception

最后,显示方法不接受MailItem实例。相反,您可以传递true使检查器显示为模态窗口,或者省略参数(默认情况下使用false)。

顺便问一下,你是在何时何地运行代码的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33229226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档