c# - 如何查找电子邮件转发到的电子邮件地址(在 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的某个地方)。
解决方案
电子邮件中有一些标题包含此信息: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"];
}
这些似乎包含目标电子邮件地址,并解决了问题。
**我目前不确定为什么会有多个,或者这些是否标准化
推荐阅读
- javascript - 如何使此 JavaScript 与“使用严格”兼容?
- android - 在android 11中创建文件夹并存储文件
- cics - 如何在 CICS 上回滚对 VSAM 文件的更改?
- node.js - GatewayScript 请求而不等待响应
- whatsapp - 在 Whatsapp API 链接中选择英语
- javascript - 如何重叠导航栏而不是向右推送内容?
- python - 使用 sklearn 进行 rmse 交叉验证
- python - Python在换行符中写入文件
- r - 查找模式并在括号之间换行下一个字母
- python - 如何获取传递的参数以在多处理池中返回值?