【发布时间】:2019-02-09 05:15:23
【问题描述】:
我们有一个万能的电子邮件地址,并且正在将电子邮件转发到 [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)。
【问题讨论】:
-
也许您可以使用 Envelope.InReplyTo (return email-Id) 找到原始电子邮件,然后转到该电子邮件并获取地址。您可以先使用 MessageSummary.IsReply 进行验证。 mimekit.net/docs/html/P_MailKit_Envelope_InReplyTo.htm
-
InReplyTo 为 null 唉
-
MessageSummary.IsReply 是真的吗?并且 InReplyTo 为空?该方法查找诸如“RE”、“FWD”之类的字符串
-
IsReply 为假,InReplyTo 为空 - 这不是回复,而是转发(就像在 gmail 中,“将所有电子邮件转发到...”),所以我不认为这是官方的“回复”