使用 EWS for Exchange 2013 获取收件人电子邮件地址
Posted
技术标签:
【中文标题】使用 EWS for Exchange 2013 获取收件人电子邮件地址【英文标题】:Get the to email address using EWS for exchange 2013 【发布时间】:2020-08-17 21:07:08 【问题描述】:我正在尝试使用 EWS 2013 获取电子邮件发送到的实际“收件人:”电子邮件地址。因此我可以根据邮件发送到的电子邮件地址运行不同的方法。我的问题类似于Exchange Web Services (EWS) API "To" header for alias 这个问题,因为我发送到的别名被替换为邮箱的主电子邮件地址。
我已经成功地使用上述文章检索了传输标头中的 To: 地址,但前提是电子邮件来自交换组织之外。如果电子邮件是由域中的其他用户发送的,则只有主电子邮件地址在标头中可见。如何获取邮件发送到的实际电子邮件地址..??
ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDefinition(0x007D, MapiPropertyType.String);
PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties) PR_TRANSPORT_MESSAGE_HEADERS, ItemSchema.MimeContent ;
Item NewItem = Item.Bind(Service, itemEvent.ItemId, propSet);
if (NewItem is EmailMessage)
NewItem.Load(propSet);
Object valHeaders = null;
string emailaddress = "";
if (NewItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS, out valHeaders))
//Console.WriteLine((String)valHeaders);
Regex regex = new Regex(@"for.*<(.+)>|To:.*<(.+)");
Match match = regex.Match(valHeaders.ToString());
if (match.Groups[0].Value.ToString().Contains("for"))
emailaddress = match.Groups[1].Value;
if (match.Groups[0].Value.ToString().Contains("To:"))
emailaddress = match.Groups[2].Value;
if ("this@domain.com" == emailaddress)
dothis();
if ("that@domain.com" == emailaddress)
dothat();
【问题讨论】:
【参考方案1】:解决方法是创建一个通讯组并在其中添加邮箱,不要在邮箱下直接添加别名。
【讨论】:
以上是关于使用 EWS for Exchange 2013 获取收件人电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章
使用 EWS 读取 Exchange Server 上的所有自定义属性
如何使用 EWS Java API (Exchange Web Service) 设置联系人标题?
EWS Managed Api 中的电子邮件对话/电子邮件线程支持(针对 Exchange 2010 左右)