首页 > 解决方案 > 从 SharedMailbox 中检索别名

问题描述

我想检索已通过电子邮件发送到共享邮箱的别名电子邮件,但 Exchange 使用共享邮箱的主要电子邮件地址覆盖了“收件人”

示例 - “aa@alias.co.uk” 别名通过共享邮箱通过电子邮件发送。我想检索“aa@alias.co.uk”电子邮件

PrimaryEmail - aa@primarydomain.co.uk

别名电子邮件 - aa@alias.co.uk

我曾尝试访问电子邮件的标题,但没有运气

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Exchange.WebServices.Data;

namespace readSharedMailbox
{
    class Program
    {
        static void Main(string[] args)
        {
            ExchangeService _service;
            try
            {
                Console.WriteLine("Registering Exchange connection");
                _service = new ExchangeService
                {
                    Credentials = new WebCredentials("*******", "********")
                };
            }
            catch
            {
                Console.WriteLine("new ExchangeService failed. Press enter to exit:");
                return;
            }
            // Office365 webservice URL
            _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
            try
            {
                Console.WriteLine("Reading mail");
                FindItemsResults<Item> result = _service.FindItems(WellKnownFolderName.Inbox, new ItemView(1));

                foreach (Item item in result)
                {
                    EmailMessage message = EmailMessage.Bind(_service, item.Id);
                    Console.WriteLine("Reading items");
                    Console.WriteLine(message.ToRecipients[0].Address.ToString());
                    /* Reading the Header

                    foreach (var property in message.InternetMessageHeaders)
                    {
                        Console.WriteLine(property.Name);
                        Console.WriteLine(property.Value);
                    }
                    */
                }
                Console.WriteLine("Exiting");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("An error has occured. \n:" + e.Message);
            }
        }
    }

}

标签: c#exchangewebservices

解决方案


Exchange 始终将发件人和收件人解析为其 GAL 对象 - 您不再拥有一次性 SMTP 条目,而是拥有 GAL 对象。检索PR_TRANSPORT_MESSAGE_HEADERS属性(DASL 名称http://schemas.microsoft.com/mapi/proptag/0x007D001F)并手动解析 To/CC 标头是查看邮件发送到的原始 SMTP 地址的唯一方法。但即便如此,我也看到了 MIME 标头被 E​​xchange 破坏并且不再包含 SMTP 地址,而只是显示名称的情况。


推荐阅读