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并且使用addin的人也是whatever@example.com(同域)
我会得到类似于:7GXaaJDx5FDd\PERSON 而不是普通的电子邮件地址字符串。
我在文档的某处读到(我似乎无法再次找到它)当发件人在同一个域中时,它将 return 这个字符串而不是普通的电子邮件地址,我'我不确定为什么,但即使它们都属于同一个域,我如何才能将其放入普通电子邮件地址。还是有另一种方法可以解决这个问题,因为我不明白为什么它会这样工作。如果有人碰巧知道这背后的原因,我很想听听。但这不是我的问题。
编辑:
找到这个,https://msdn.microsoft.com/en-us/library/office/ff869674.aspx
参考MailItem.SenderEmailType属性。如果 EX 是同一组织中的交换服务器。所以我可以测试看看我是否会得到这个 werid 字符串或一个普通的电子邮件字符串(如果类型是 SMTP)。
该示例似乎回答了我的问题,但它在 VB 中,我在将它转换为 C# 时遇到了一些问题。我看到我可以从 MailItem 对象获取 AddressEntry,然后使用 x = GetExchangeUser()
然后执行 x.PrimarySMTPAdress
来获取地址。但我也不确定这是否正确。
如果任何人有关于 SenderEmailType 的任何信息并与同一域中的交换用户打交道,任何建议都会有很大帮助。
谢谢。
如果 SenderEmailType == "SMTP",只需使用 SenderEmailAddress
。
如果 SenderEmailType == "EX",请使用 MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。准备好处理空值和异常。
在 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并且使用addin的人也是whatever@example.com(同域)
我会得到类似于:7GXaaJDx5FDd\PERSON 而不是普通的电子邮件地址字符串。
我在文档的某处读到(我似乎无法再次找到它)当发件人在同一个域中时,它将 return 这个字符串而不是普通的电子邮件地址,我'我不确定为什么,但即使它们都属于同一个域,我如何才能将其放入普通电子邮件地址。还是有另一种方法可以解决这个问题,因为我不明白为什么它会这样工作。如果有人碰巧知道这背后的原因,我很想听听。但这不是我的问题。
编辑:
找到这个,https://msdn.microsoft.com/en-us/library/office/ff869674.aspx 参考MailItem.SenderEmailType属性。如果 EX 是同一组织中的交换服务器。所以我可以测试看看我是否会得到这个 werid 字符串或一个普通的电子邮件字符串(如果类型是 SMTP)。
该示例似乎回答了我的问题,但它在 VB 中,我在将它转换为 C# 时遇到了一些问题。我看到我可以从 MailItem 对象获取 AddressEntry,然后使用 x = GetExchangeUser()
然后执行 x.PrimarySMTPAdress
来获取地址。但我也不确定这是否正确。
如果任何人有关于 SenderEmailType 的任何信息并与同一域中的交换用户打交道,任何建议都会有很大帮助。
谢谢。
如果 SenderEmailType == "SMTP",只需使用 SenderEmailAddress
。
如果 SenderEmailType == "EX",请使用 MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。准备好处理空值和异常。