“对象不支持此方法”-尝试更新电子邮件的主题时出错(MailItem.Subject)

时间:2019-07-02 18:46:34

标签: outlook-addin

我正在维护C#Outlook加载项。它在Outlook 2003中运行了很多年。今天,一个用户报告了一个我从未见过的错误。对于两封邮件(都是来自同一发件人),当她尝试处理它们时会收到此错误消息:

  

对象不支持此方法。   在Microsoft.Office.Interop.Outlook._MailItem.set_Subject(字符串主题)

加载项尝试更新主题时引发异常:

private static void ForceReconnectToExchangeServer(Outlook.MailItem mi)
{
   mi.Subject = mi.Subject + "";       // <-- HERE
   mi.Save();
}

我可以看到第二条错误消息(在Visual Studio中,该行末尾的工具提示):

  

errorCS0433:两者中都存在类型'MailItem'   'Microsoft.Office.Tools.Outlook.Implementation,版本= 10.0.0.0,   文化=中性,PublicKeyToken = b03f5f7f11d50a3a'和   'Microsoft.Office.Tools.Outlook,版本= 10.0.0.0,文化=中性   (...看不到该行的其余部分...。)

知道为什么会这样吗?非常感谢!

注1:此加载项使用最新版本的“兑换”。

注意2:即使我删除了邮件中的所有内容,将邮件转发给自己(进行处理)时,我也会遇到相同的错误。但是,如果我将邮件格式更改为“纯文本”,则没有错误。

注3:此问题可能与this one有关,但没有人回答。

2 个答案:

答案 0 :(得分:1)

您的项目中是否有机器人引用?确保没有冲突。

还请记住,更新Subject将导致重置特定于对话的属性。重置消息类(IPM.Note.Dummy,然后返回原始消息类)可能是一个更好的主意。

答案 1 :(得分:1)

Microsoft.Office.Tools.Outlook命名空间包含一组类和接口,使您可以创建自定义Microsoft Office Outlook表单的表单区域。

我建议您检查代码库,并从项目中删除未使用的引用。另外,请确保Outlook命名空间指向Microsoft.Office.Interop.Outlook,例如:

private static void ForceReconnectToExchangeServer(Microsoft.Office.Interop.Outlook.MailItem mi)
{
   mi.Subject = mi.Subject + "";       // <-- HERE
   mi.Save();
}