簡體   English   中英

VSTO Outlook從具有相同域的某人獲取電子郵件地址

[英]VSTO Outlook Getting Email Address From Someone with same Domain

在VSTO Outlook 2013插件中,我使用此方法來獲取發件人的電子郵件地址:

Inspector currentObject = Globals.ThisAddIn.Application.ActiveInspector();
Object currentItem = currentObject.CurrentItem;
MailItem message = currentItem as MailItem;
string senderMailAddress = message.SenderEmailAddress;

除了在某些情況下,這總是很好用。 我得到的字符串是他們的電子郵件地址。 但是,如果發件人與使用該插件的人位於同一域中,那么我會得到一個字符串,其中包含一堆隨機字符,反斜杠和不帶大寫字母的域的電子郵件地址。

示例:如果發件人是person@example.com,並且使用插件的人也是what@example.com(同一域)

我會得到類似:7GXaaJD \\ 3x5FDd \\ PERSON的信息,而不是普通的電子郵件地址字符串。

我在文檔中的某處讀到(似乎無法再次找到它),當發件人位於同一域中時,它將返回此字符串而不是正常的電子郵件地址,我不確定為什么,但是如何獲取即使它們都屬於同一個域,也將其轉換為普通的電子郵件地址。 還是有另一種方法來解決此問題,因為對我而言,為什么它起作用才是有意義的。 如果有人碰巧知道背后的原因,我很想聽聽。 但這不是我的問題。

編輯:

找到了這個, https: //msdn.microsoft.com/en-us/library/office/ff869674.aspx引用MailItem.SenderEmailType屬性。 如果EX是同一組織中的交換服務器,則該選擇。 因此,我可以進行測試以查看是否會得到該字符串或正常的電子郵件字符串(如果類型為SMTP)。

該示例似乎可以回答我的問題,但是它在VB中,並且在將其轉換為C#時遇到了一些麻煩。 我看到可以從MailItem對象獲取AddressEntry,然后使用x = GetExchangeUser() ,然后執行x.PrimarySMTPAdress以獲取地址。 但是我不確定這是否正確。

如果有人擁有有關SenderEmailType的任何信息並與同一域中的交換用戶打交道,那么任何建議都將大有幫助。

謝謝。

如果SenderEmailType ==“ SMTP”,則只需使用SenderEmailAddress

如果SenderEmailType ==“ EX”,請使用MailItem.Sender.GetExchangeUser().PrimarySmtpAddress 准備處理null和異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM