Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VSTO Outlook从具有相同域的用户处获取电子邮件地址_C#_Vsto_Outlook Addin - Fatal编程技术网

C# VSTO Outlook从具有相同域的用户处获取电子邮件地址

C# VSTO Outlook从具有相同域的用户处获取电子邮件地址,c#,vsto,outlook-addin,C#,Vsto,Outlook Addin,在VSTO outlook 2013中,我使用此方法获取发件人的电子邮件地址: Inspector currentObject = Globals.ThisAddIn.Application.ActiveInspector(); Object currentItem = currentObject.CurrentItem; MailItem message = currentItem as MailItem; string senderMailAddress = message.SenderEm

在VSTO outlook 2013中,我使用此方法获取发件人的电子邮件地址:

Inspector currentObject = Globals.ThisAddIn.Application.ActiveInspector();
Object currentItem = currentObject.CurrentItem;
MailItem message = currentItem as MailItem;
string senderMailAddress = message.SenderEmailAddress;
这总是很有效,除了一种情况。我得到一个字符串,这是他们的电子邮件地址。但是,如果发送者与使用addin的人在同一个域中,我会得到一个字符串,它是一组随机字符、反斜杠和电子邮件地址,而不包括所有大写的域

例如: 如果发送者是person@example.com使用addin的人也是whatever@example.com(同一领域)

我将得到类似于:7GXaaJD\3x5FDd\PERSON的内容,而不是普通的电子邮件地址字符串

我在文档的某个地方读到(我似乎再也找不到了)当发件人在同一个域中时,它将返回此字符串而不是正常的电子邮件地址,我不知道为什么,但即使他们都属于同一个域,我如何才能将其输入到正常的电子邮件地址中。或者有没有其他方法可以绕过这个问题,因为我不明白为什么它会这样做。如果有人碰巧知道这背后的原因,我很想听听。但这不是我的问题

编辑:

找到这个, 引用MailItem.SenderEmailType属性。如果EX是同一组织中的exchange server,则为。因此,我可以测试,看看我是否会得到这个werid字符串或正常的电子邮件字符串(如果类型是SMTP)

这个例子似乎回答了我的问题,但它是在VB中,我在将它转换为C#时遇到了一些问题。我发现我可以从MailItem对象中获取AddressEntry,然后使用
x=GetExchangeUser()
然后执行
x.primarySmtpAddress
来获取地址。但我也不确定这是否正确

如果任何人有关于SenderEmailType和与同一域中的exchange用户打交道的任何信息,任何建议都会有很大帮助

谢谢。

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


如果SenderEmailType==“EX”,请使用
MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。准备好处理空值和异常。

谢谢,所以我说的是正确的。如果这样做,我将获得正确的emailaddress字符串?不是那么奇怪吗?是的,你可以先在OutlookSpy中测试它-单击项,选择发件人属性,单击浏览,转到函数选项卡,选择GetExchangeUser,单击调用。我不知道你说的Outlook Spy是什么意思,那是什么?我只是想在代码中实现它。使用我以前的方法,但检查SenderEmailType。它是一个用于在Outlook中漫游的工具-它将自身安装为COM加载项,并在Outlook中添加一个功能区。