System.Net.Mail 的 MailAddress 实际上更接近 MimeKit 的 MailboxAddress 类。
同样,System.Net.Mail 的 MailAddressCollection 等价于 MimeKit 的 InternetAddressList。
然而,与 System.Net.Mail 不同,MimeKit 还支持由 rfc822 定义的group 类型的地址(后来由 rfc2822 和 rfc5322 更新),如下所示:
group-name: mailbox1@domain.com, mailbox2@domain.com;
结合To: 标头中的普通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) 不是 MailAddressCollection.Add(string) 的直接替代品,因为它们做不同的事情。
MailAddressCollection.Add(string) 不仅解析字符串,还将解析的邮箱地址(作为MailAddress 项)附加到集合中。
InternetAddressList.Parse(string) 解析字符串,将邮箱(和/或组)地址作为InternetAddressList 对象返回。
如果解释不清楚,让我们举一些例子:
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);
}
现在有意义吗?