-1
我正在嘗試從,到和cc字段的電子郵件地址。有時這些是AD電子郵件,SMTP或分發電子郵件。如何爲Exhance用戶和通訊組列表獲取PrimarySmtpAddress
我發現有人在這裏遇到類似的問題,但他們沒有任何關於分配列表的信息。
我稍微修改了代碼以嘗試獲取此值。
if (type.ToLower() == "ex")
{
recip = Globals.ThisAddIn.Application.GetNamespace("MAPI").CreateRecipient(address);
if (recip.DisplayType == OlDisplayType.olDistList)
{
sAddress = recip.AddressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
sAddress = recip.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
sAddress = address.Replace("'", "");
}
問題是recip.DisplayType
爲空,除非有讓收件人和調用顯示類型該對象後,一個小的延遲。
有沒有更好的方式來做到這一點?
我改變了代碼以下,但我有顧慮,這將不會對所有的DisplayTypes工作,我甚至不知道什麼最類型是(選項顯示在這裏http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.oldisplaytype%28v=office.14%29.aspx)
private static string GetSmtpAddress(AddressEntry addressEntry)
{
string address;
if (addressEntry.Type == "ex")
{
if (addressEntry.DisplayType == OlDisplayType.olDistList)
{
address = addressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
address = addressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
address = addressEntry.Address;
}
return address;
}
此外,類型和地址變量來自哪裏?他們來自另一個AddressEntry對象嗎?爲什麼不使用它? – 2013-02-08 23:42:19
感謝您的幫助,我會嘗試先使用解決方案。你的其他問題是一個好讓我檢查.. – Josh 2013-02-09 00:34:21
好吧,這就是我所做的。我在mailitem中遍歷每個收件人,然後使用recipient.AddressEntry.Address獲取電子郵件地址。最初的問題是這將爲交換用戶提供AD信息。所以我最終通過這個函數來解析上面的函數。現在我看它,我可以調用recipient.GetExchangeDistributionList()。PrimarySmtpAddress或.GetExchangeUser()。PrimarySmtpAddress或.Address根據需要。會很高興有一個屬性來獲得適當的smtp地址。 – Josh 2013-02-09 00:42:10