如何查找转发到电子邮件的电子邮件地址(在MimeKit中)

时间:2018-09-04 08:14:54

标签: c# email email-integration mimekit

我们拥有一个包含所有内容的电子邮件地址,并且电子邮件将转发至[an-id] @ ourdomain.com

然后我们将以代码形式提取这些电子邮件以对其进行处理……处理并不重要。

        using (ImapClient client = new ImapClient())
        {
            var credentials = new NetworkCredential(settings.Value.Email.User, settings.Value.Email.Password);
            var uri = new Uri("imaps://" + settings.Value.Email.Server);
            client.Connect(uri);
            client.AuthenticationMechanisms.Remove("XOAUTH2");
            client.Authenticate(credentials);
            client.Inbox.Open(FolderAccess.ReadWrite);

            IList<IMessageSummary> messages = null;

            foreach (var message in client.Inbox.Fetch(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure))
            {
                // Processing
            }
        }

但是,“ message.Envelope.To.Mailboxes”包含发送给电子邮件的原始电子邮件地址(myemail@gmail.com),而不包含转发给([an-id] @ourdomain)的电子邮件地址。 com)。据我所知,[an-id] @ ourdomain.com不会出现在信封中的任何地方。

是否可以找到此电子邮件地址? (我们基本上需要ID才能进行路由)。

或者我应该使用另一种方法来实现此目的(将电子邮件路由到某处并使用可以处理的ID)

1 个答案:

答案 0 :(得分:1)

电子邮件中有一些标题,其中包含以下信息: X-Orig-To或X-Forwarded-To

            var fields = new HashSet<string>(){ "X-Orig-To", "X-Forwarded-To" };
            foreach (var message in client.Inbox.Fetch(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure, fields))
            {
                  var email = message.Headers["X-Orig-To"];
            }

这些似乎包含目标电子邮件地址,并解决了问题。

**我目前不确定为什么会有不止一个,或者是否标准化了