我有这样的代码
var mi = MyAddIn.Application.ActiveInspector().CurrentItem as MailItem;
if (mi != null)
{
mi.Attachments.Add(myFilePath);
}
此代码的问题在于它假定将打开新邮件对话框(ActiveInspector
CurrentItem
为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);
}
答案 0 :(得分: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);
}
有关详细信息,请参阅How to: Programmatically Determine the Current Outlook Item。