[英]How to find the email address an email was forwarded to (in 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"];
}
這些似乎包含目標電子郵件地址,並解決了問題。
**我目前不確定為什么會有不止一個,或者是否標准化
您是否找到了解決方案? 我正在尋找一個可以提供轉發電子郵件的 InboxName/InboxAddress 的字段。 我看不到
“X-Orig-To”,所有電子郵件中的字段。 “X-Forwarded-To” - > 未提供目標電子郵件地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.