MimeKit InternetAddressList.Parse 与 System.Net.Mail.MailAddressCollection.Add 兼容吗?

Is MimeKit InternetAddressList.Parse compatible with System.Net.Mail.MailAddressCollection.Add?

想请教 MimeKit 的开发者,这些 class 是如何关联的?

本文介绍了 .NET class 如何解析。

https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailaddress?view=netcore-3.1

为 MimeKit 找到的唯一东西是:

http://www.mimekit.net/docs/html/T_MimeKit_InternetAddress.htm

A mailbox address, as specified by rfc822

谁支持的案例更多?很高兴看到一些比较 table。

System.Net.Mail的MailAddress实际上更接近MimeKit的MailboxAddress class.

同样,System.Net.Mail 的 MailAddressCollection 等同于 MimeKit 的 InternetAddressList.

然而,与System.Net.Mail不同,MimeKit 还支持由 rfc822(后来由 rfc2822 和 rfc5322 更新)定义的 group 类型的地址,如下所示:

group-name: mailbox1@domain.com, mailbox2@domain.com;

To: header 中与正常的 mailbox 样式地址组合,例如,它可能如下所示:

To: not-in-the-group@domain.com, group-name: in-the-group1@domain.com, in-the-group2@domain.com;, not-in-the-group2@domain.com

回到标题中的问题:MimeKit InternetAddressList.Parse 与 System.Net.Mail.MailAddressCollection.Add 兼容吗?

它们很相似,但是 InternetAddressList.Parse(string) 不能 drop-in 替代 MailAddressCollection.Add(string),因为它们做的事情不同。

MailAddressCollection.Add(string) 不仅解析字符串,还将解析的邮箱地址(作为 MailAddress 项)附加到 collection.

InternetAddressList.Parse(string) 解析字符串,将邮箱(and/or 组)地址作为 InternetAddressList object.

返回

如果解释不清楚,让我们举一些例子:

var to = new MailAddressCollection ();
to.Add ("user1@domain.com, user2@domain.com");

使用 MimeKit,您将执行以下操作:

var to = InternetAddressList.Parse ("user1@domain.com, user2@domain.com");

现在让我们看另一个例子:

void AddDefaultRecipients (MailAddressCollection collection, string recipients)
{
    collection.Add (recipients);
}

要使用 MimeKit 完成同样的事情,您可以这样做:

void AddDefaultRecipients (InternetAddressList list, string recipients)
{
    var parsed = InternetAddressList.Parse (recipients);
    list.AddRange (parsed);
}

现在明白了吗?