使用 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 左右)

如果联系人在 GAL 中,Exchange Web 服务 (EWS) FindItems 将不起作用

通过 EWS 在 Exchange 中创建联系人

Java---使用EWS读取exchange邮件