0

我正試圖確定Outlook 2007及更高版本中的電子郵件的發件人。在Outlook 2010中,MailItem對象上有一個Sender屬性,而在Outlook 2007中,您必須按照this question中提及的方式進行不同的操作。如何檢查Outlook Interop中是否存在屬性?

因此,現在我需要知道當前版本的Outlook是否支持Sender屬性,如果不支持,請使用其他方法。這樣做的原因是我寧願使用Sender屬性與未來版本的Outlook兼容,而不是在Outlook版本上有條件。

所以問題是如何確定Outlook Interop中是否存在屬性?顯然,這是一個COM對象,我不能在這裏使用反射。

+0

你試過try..catch-approach?這在COM互操作中經常需要。 – Scoregraphic 2012-08-03 06:49:56

+0

@Scoregraphic,我已經嘗試過這種方法,但它不起作用。 Outlook只是從中間無聲無息地退出,而無需進入catch塊。 – devanalyst 2012-08-03 07:39:06

回答

1

我用MailItem.ItemProperties收集檢查「發件人」屬性。以下是密碼

Microsoft.Office.Interop.Outlook.MailItem myMail; 

//Code to get the mail 
.... 

Microsoft.Office.Interop.Outlook.ItemProperties mailProps = myMail.ItemProperties; 

Microsoft.Office.Interop.Outlook.ItemProperty mailProp = mailProps.Item ("Sender"); //the parameter is case-sensitive 

if(mailProp != null) 
{ 
    //get email address using Sender object 
    Microsoft.Office.Interop.Outlook.AddressEntry theSender = myMail.Sender; 
} 
else 
{ 
    //use alternate method for Outlook 2007 
} 
0

您可以使用IDispatch::GetIDsOfNames,看看屬性存在

+0

可否請您詳細說明一下?我不知道我該如何使用它(並且它看起來不像迄今爲止的任何註冊用戶) – Breeze 2016-05-06 06:01:10