C# 检查 Outlook 邮件项目是否是真正的 MailItem

标签 c# outlook

我希望获得一些帮助,即使用以下代码片段确定加载到对象中的 MailItem 的类型。您将看到我从事件浏览器选择中加载对象并测试它是否是邮件项目。我想避免选择的是诸如已读收据、 session 致谢等对象,并测试我想要获取其类型的每种类型的对象 - 我尝试在下面的 else 语句中测试它 - 但我所有的在调试窗口中得到的是“Not a Mail Item: I am a :System.__ComObject”

// set the mail item
object selectedItem = Globals.ThisAddIn.Application.ActiveExplorer().Selection[1];
// This example uses only MailItem. 
if (selectedItem is Outlook.MailItem)
{
 // Cast selectedItem to MailItem. 
 Outlook.MailItem mailItem = selectedItem as Outlook.MailItem;
 // Do something with the MailItem
}
else
{
 // what sort of item are we?
 Debug.WriteLine("I am not a Mail Item: I am a :" + 
 selectedItem.GetType().ToString());
}

最佳答案

应该执行以下操作

if(item is MailItem) 
{

}

但是,我必须检查“null”对象,并且由于某些奇怪的原因我得到了一个 null 对象。因此,我不得不使用以下方法来解决问题

if (item != null && item is MailItem)
{
}

关于C# 检查 Outlook 邮件项目是否是真正的 MailItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49474565/

相关文章:

python - pyExchange 的时区问题

c# - 通过 MAPI 接口(interface)从 MailItem 获取电子邮件文件夹

c# - 无法创建常量值 - 只有基本类型

c# - 在 csproj 的 OutputPath 中使用 $(TargetName) 或 $(ProjectName)

javascript - MVC - 单击时没有任何反应( View 中的 Jquery)

outlook - 在Outlook外部保存/组织/搜索Outlook电子邮件

html - 修复时事通讯代码以在 Outlook 中正常工作

excel - 从 Excel 发送一封带有后续提醒的电子邮件

c# - 追加到新行不会去新行

java - iCal4J 生成的 Outlook 无法识别 .ics 文件中的时区