首页 > 解决方案 > 如何查找电子邮件转发到的电子邮件地址(在 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的某个地方)。

标签: c#emailmimekit

解决方案


电子邮件中有一些标题包含此信息: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"];
            }

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

**我目前不确定为什么会有多个,或者这些是否标准化


推荐阅读