Exchange server Exchange Web服务(EWS)API“;至;别名的标题

Exchange server Exchange Web服务(EWS)API“;至;别名的标题,exchange-server,exchange-server-2007,exchangewebservices,ews-managed-api,Exchange Server,Exchange Server 2007,Exchangewebservices,Ews Managed Api,我在exchange中设置了一个收件箱,hello@mycompany.com 此外,还有一个别名,news@mycompany.com,因此发送到新闻地址的所有电子邮件都会在你好收件箱中结束 理想情况下,我希望能够使用EWS判断电子邮件发送到哪个别名 当我向发送电子邮件时news@mycompany.com,并使用Microsoft Outlook检查邮件的Internet标题,收件人:标题为收件人:您好,这正是我想要看到的 但是,使用EWS,当我查看邮件的属性时,报告的电子邮件地址始终是主S

我在exchange中设置了一个收件箱,
hello@mycompany.com

此外,还有一个别名,
news@mycompany.com
,因此发送到
新闻
地址的所有电子邮件都会在
你好
收件箱中结束

理想情况下,我希望能够使用EWS判断电子邮件发送到哪个别名

当我向
发送电子邮件时news@mycompany.com
,并使用Microsoft Outlook检查邮件的Internet标题,
收件人:
标题为
收件人:您好
,这正是我想要看到的

但是,使用EWS,当我查看邮件的属性时,报告的电子邮件地址始终是主SMTP地址的电子邮件地址。此外,Webservices.Data.Item的属性不包含To:属性。我似乎也看不到用于检查消息所有属性的正确地址

这个问题的答案似乎表明

…有关邮件发送到的实际电子邮件地址的信息存储在收件人集合中,您无法在EWS中访问该集合(在exportmessage之外)

我将如何通过编程方式进行此操作,以便找到正确的
收件人:
地址?

这对我很有用:

    private static string GetToAddress()
    {
        ExchangeService exService = new ExchangeService();
        exService.Credentials = new NetworkCredential("username", "password", "domain");
        exService.Url = new Uri("https://youraddress/EWS/Exchange.asmx");

        ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDefinition(0x007D,MapiPropertyType.String);
        PropertySet psPropSet = new PropertySet(BasePropertySet.FirstClassProperties)
                                    {PR_TRANSPORT_MESSAGE_HEADERS, ItemSchema.MimeContent};

        FindItemsResults<Item> fiResults = exService.FindItems(WellKnownFolderName.Inbox, new ItemView(1));
        foreach (Item itItem in fiResults.Items)
        {
            itItem.Load(psPropSet);
            Object valHeaders;
            if (itItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS, out valHeaders))
            {
                Regex regex = new Regex(@"To:.*<(.+)>");
                Match match = regex.Match(valHeaders.ToString());
                if (match.Groups.Count == 2)
                    return match.Groups[1].Value;
            }
            return ToAddress;
        }
        return "Cannot find ToAddress";
    }
private静态字符串GetToAddress()
{
ExchangeService exService=新的ExchangeService();
exService.Credentials=新的网络凭据(“用户名”、“密码”、“域”);
exService.Url=新Uri(“https://youraddress/EWS/Exchange.asmx");
ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS=新的ExtendedPropertyDefinition(0x007D,MapPropertyType.String);
PropertySet psPropSet=新的PropertySet(BasePropertySet.FirstClassProperties)
{PR_TRANSPORT_MESSAGE_HEADERS,ItemSchema.MimeContent};
FindItemsResults fiResults=exService.FindItems(WellKnownFolderName.Inbox,新项目视图(1));
foreach(fiResults.Items中的项目itItem)
{
项目荷载(psPropSet);
对象标题;
if(itItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS,out valHeaders))
{
正则表达式正则表达式=新正则表达式(@“To:.*);
Match=regex.Match(valHeaders.ToString());
if(match.Groups.Count==2)
返回match.Groups[1]值;
}
返回地址;
}
返回“找不到地址”;
}
代码来自:

我遇到了完全相同的问题,你找到解决方案了吗?@HeavenCore,不幸的是没有,我们最后在电子邮件主题行中添加了一个标签,告诉我们的应用程序如何处理电子邮件。e、 g.“废话新闻”的主题将作为新闻处理。该死,谢谢你,如果我发现什么,我会告诉你的。你有什么消息吗?同样的问题…@BoasEnkler不幸的是,这个项目没有使用,所以我还没有机会尝试其他任何东西。弗兰克的解决方案看起来值得一试!让我们知道,如果你发现它的工作:)为我工作。我需要添加更多的逻辑来解析多个收件人和多行的“收件人:”标题。有没有使用过这种解决方案的经验?我不确定为什么这不是答案。工作方式正是我所需要的。ToAddress没有在任何地方定义?这看起来很好,但我有一个别名地址不包含在尖括号中的情况。你知道如何解释这两种情况吗?也就是说,收件人:电子邮件可能看起来像“收件人:用户名”,或者像这样“收件人:username@contoso.com'