gpt4 book ai didi

c# - MailItem.HtmlBody 抛出 Not Implemented 异常

转载 作者:行者123 更新时间:2023-11-30 20:37:39 27 4
gpt4 key购买 nike

我有一个功能区按钮,它通过修改基于其中的收件人的 MailItem 对象将文本插入到 outlook 检查器中。单击时调用的方法如下所示:

public async void OnTemplateClick(Office.IRibbonControl control)
{
var templateId = control.Tag;
var template = templates.GetTemplateById(templateId);
await templateUi.SetTemplate(control.Context, template);
}

SetTemplate 方法如下所示:

public async Task SetTemplate(object window, Template template, 
SynchronizationContext uiThread = null)
{
Outlook.MailItem currentMailItem = null;
Outlook.Recipients olRecps = null;
Outlook.Recipient recp = null;
Outlook.AddressEntry addEntry = null;
try
{
currentMailItem = GetMailItem(window);
olRecps = currentMailItem.Recipients;
var recipType = Outlook.OlMailRecipientType.olTo;
var recps = from r in olRecps.Cast<Outlook.Recipient>()
where r.Type == (int)recipType
select r;
var numRecps = recps.Count();

var oldBodyHtml = currentMailItem.HTMLBody;
...

现在,有时候,获取 HTMLBody 的最后一行会抛出以下错误:

System.Runtime.InteropServices.COMException (0x8E604001): Not implemented.
at Microsoft.Office.Interop.Outlook._MailItem.get_HTMLBody()

此错误并非一直发生,而且很难重现,因此我们大多在应用程序日志中看到它。我想知道可能导致此错误的原因是什么?我假设这与此异步调用的时间有关,这意味着 MailItem 消息未完全形成?

谢谢!

最佳答案

Outlook 对象模型不能在辅助线程上使用。 Outlook 2016 会在检测到此类调用时立即引发错误。在旧版本的 Outlook 中,调用可能会意外失败。

如果必须使用辅助线程,您唯一的选择是 Extended MAPI (C++ 或 Delphi)或 Redemption (我是它的作者 - 它的 RDO 对象族 can be used on secondary threads)。

关于c# - MailItem.HtmlBody 抛出 Not Implemented 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com