我们拥有一个包含所有内容的电子邮件地址,并且电子邮件将转发至[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)
答案 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"];
}
这些似乎包含目标电子邮件地址,并解决了问题。
**我目前不确定为什么会有不止一个,或者是否标准化了