0

我有这样的代码

var mi = MyAddIn.Application.ActiveInspector().CurrentItem as MailItem;

if (mi != null)
{
    mi.Attachments.Add(myFilePath);
}

这段代码的问题是它假定新的邮件对话框将被打开(ActiveInspector CurrentItem是 a MailItem)。但是,在我的情况下并非总是如此。

如果不是这种情况,那么上面的代码获取mi将抛出NullReferenceException.

如何检查我是否打开了新的邮件对话框,如果是,则使用上面的行来获取它;否则创建新的 MailItem(新邮件对话框)?

我正在尝试做这样的事情:

var mi;

if (MyAddIn.Application.ActiveInspector().CurrentItem != null)
{
    // get existing
    mi = MyAddIn.Application.ActiveInspector().CurrentItem as MailItem;
}
else 
{
    // otherwise, create new one
    mi = MyAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
}

// now use it to attach file   
if (mi != null)
{
    mi.Attachments.Add(myFilePath);
}
4

1 回答 1

1

您需要首先检查 ActiveInspector 方法调用返回的内容。

var mi;
var inspector = MyAddIn.Application.ActiveInspector();
if (inspector != null)
{
   // get existing
   mi = inspector.CurrentItem as MailItem;
}
else 
{
   // otherwise, create new one
   mi = MyAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
 }

// now use it to attach file   
if (mi != null)
{
   mi.Attachments.Add(myFilePath);
} 

有关详细信息,请参阅如何:以编程方式确定当前 Outlook 项目

于 2016-08-10T23:47:58.263 回答