MailKit 发件人地址

问题描述 投票:0回答:4

我正在 asp mvc 核心中使用 mailKit 从 IMAP 邮箱收集电子邮件。

我使用命令返回消息

var message = inbox.GetMessage(uid) 

这将返回消息的所有结果。从这里我想访问发件人电子邮件地址(不包括姓名)。在上面一行上断点后,我可以看到变量消息具有以下属性

message
-From
--From(Array)
---From(item)
----Name (name of the sender)
----Address(email of the sender)

当使用消息引用上述内容时,我能够收到名称,但是地址未列出(在 intelisence 内,也不会构建)

var name = message.From[0].Name.ToString()

有谁知道为什么这会作为变量的属性可见,但无法通过代码访问?

我只是想

var name = message.From[0].Name.ToString()
c# asp.net-mvc mailkit
4个回答
31
投票

MimeMessage.From
属性是一个
InternetAddressList
(或多或少
List<InternetAddress>
)。

InternetAddress
MailboxAddress
GroupAddress
的抽象基类,正如您所发现的,它仅包含
Name
属性。

为了获得

Address
,您首先需要将其转换为
MailboxAddress
...但前提是它实际上是
MailboxAddress
,否则您将收到转换异常。

InternetAddressList
有一个名为
Mailboxes
的便利属性,可用于迭代其中包含的
MailboxAddress
的扁平列表。


1
投票

另一个解决方案:

message.From.Mailboxes.Single().Address;

0
投票

您可以使用此代码块。

message.From.OfType<MailboxAddress>().Single().Address;


0
投票

它对我有用。

var from = message.From.Mailboxes.FirstOrDefault().Address;

© www.soinside.com 2019 - 2024. All rights reserved.