我正在尝试编写一个AddIn,可以在加载时修改Outlook MailItem(通过预览窗格或通过打开它)。这是我到目前为止的代码,但我似乎无法实际访问MailItem
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, EventArgs e)
{
Application.ItemLoad += ApplicationOnItemLoad;
}
private void ApplicationOnItemLoad(object item)
{
var mail = item as MailItem;
if (mail != null)
{
Console.WriteLine(mail.HTMLBody);
}
}
// Etc...
}
代码到达Console.WriteLine(mail.HTMLBody);
语句就好了,这意味着将项目作为Outlook MailItem强制转换(它最终不会为null)。但是,我无法访问任何MailItem成员......它只是抛出异常:
“System.Runtime.InteropServices.COMException”类型的第一次机会异常 发生在MyOutlookProject.DLL中
类型为'System.Reflection.TargetInvocationException'的第一次机会异常 发生在mscorlib.dll
答案 0 :(得分:2)
Application.ItemLoad
在项目完全加载之前发生。除Item
和Class
以外的MessageClass
,您无法阅读任何属性。
当Outlook项开始加载到内存时,会发生此事件。除了Outlook项的Class和MessageClass属性的值之外,该项的数据尚不可用,因此在为Item中返回的Outlook项调用Class或MessageClass以外的任何属性时发生错误 的
要访问预览窗格中的MailItem
,您应该查看Explorer.Selection
。要访问已打开的MailItem
(通过检查员),请使用Inspectors.NewInspector
。