【发布时间】:2020-10-29 22:10:20
【问题描述】:
如何从 Mailkit v2.9.0 中的电子邮件对象中获取电子邮件地址。
我正在获取消息,将其放入IMessageSummary,循环抛出并尝试使用Envelope.From 或Envelope.Sender 方法。
循环和获取方法:
IList<IMessageSummary> fetched = null;
do
{
try
{
int startIndex = messages.Count;
fetched = client.Inbox.Fetch(startIndex, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId, cancel.Token);
break;
}
catch (ImapProtocolException)
{
await ReconnectAsync();
}
catch (IOException)
{
await ReconnectAsync();
}
} while (true);
foreach (var message in fetched)
{
try
{
if(!(message.Flags.Value.HasFlag(MessageFlags.Seen)))
{
client.Inbox.AddFlags(message.UniqueId, MessageFlags.Seen, false);
if (message.TextBody != null)
{
var mime = (TextPart)client.Inbox.GetBodyPart(message.UniqueId, message.TextBody);
text = mime.Text;
Console.WriteLine("{0}", message.Envelope.Subject);
//Console.WriteLine("{0}", text);
Console.WriteLine("a:: " + message.Envelope.From);
}
else
{
var mime = (TextPart)client.Inbox.GetBodyPart(message.UniqueId, message.HtmlBody);
text = mime.Text;
Console.WriteLine("Nachricht eingegangen:");
Console.WriteLine("{0}", message.Envelope.Subject);
//Console.WriteLine("{0}", text);
Console.WriteLine("b:: " + message.Envelope.Sender);
}
有
message.Envelope.Sender
我没有得到任何输出。
有
message.Envelope.From
我得到以下输出(可能是交易所的邮箱名称和电子邮件):
"Lastname, Firstname (Companyname)" <f.lastname@company.com>
原始输出:
S: * 22 FETCH (UID 595 FLAGS (\Seen) INTERNALDATE "29-Oct-2020 09:47:37 +0100" RFC822.SIZE 6852 ENVELOPE ("Thu, 29 Oct 2020 09:47:36 +0100" "fsfsfsf" (("Company Mailbox - Information" NIL "info" "company.net")) NIL NIL (("Company Ticketsystem" NIL "ticket" "company.com")) NIL NIL NIL "<68bc049065254f68b7f9da77602e50a1@company.net>") BODY ("text" "plain" ("charset" "iso-8859-1") NIL NIL "quoted-printable" 0 0))
我不想解析 Envelope.From 的输出。也许有人可以帮忙。
【问题讨论】: