【问题标题】:Get the sender from email with Mailkit v2.9.0使用 Mailkit v2.9.0 从电子邮件中获取发件人
【发布时间】:2020-10-29 22:10:20
【问题描述】:

如何从 Mailkit v2.9.0 中的电子邮件对象中获取电子邮件地址。

我正在获取消息,将其放入IMessageSummary,循环抛出并尝试使用Envelope.FromEnvelope.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 的输出。也许有人可以帮忙。

【问题讨论】:

    标签: c# mailkit


    【解决方案1】:

    通常,Sender: 标头仅在某人代表其他人发送消息时使用。例如,秘书可能会代表老板发送电子邮件。

    如果你想要的是地址的Lastname, Firstname (Companyname) 部分,你可以这样做:

    foreach (var mailbox in message.Envelope.From.Mailboxes)
        Console.WriteLine ("{0}", mailbox.Name);
    

    如果您想要的是电子邮件地址的f.lastname@company.com 部分,那么您想要做的是:

    foreach (var mailbox in message.Envelope.From.Mailboxes)
        Console.WriteLine ("{0}", mailbox.Address);
    

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 2018-06-01
      • 2015-06-07
      • 2014-09-07
      • 2017-12-15
      • 1970-01-01
      • 2023-03-18
      • 2017-02-17
      • 1970-01-01
      相关资源
      最近更新 更多