Совместим ли MimeKit InternetAddressList.Parse с System. Net .Mail.MailAddressCollection.Add? - PullRequest
0 голосов
/ 01 мая 2020

Хотелось бы спросить разработчиков MimeKit, как эти классы соотносятся?

В этой статье описывается, как. NET анализирует классы.

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

Адрес почтового ящика, как указано в rfc822

Кто поддерживает больше дел? Было бы здорово увидеть таблицу сравнения.

1 Ответ

0 голосов
/ 01 мая 2020

Система. Net. Mail's MailAddress на самом деле ближе к MailboxAddress классу MimeKit.

Аналогично, System. Net. MailAddressCollection MailE эквивалентно InternetAddressList * MimeKit *. 1006 *.

В отличие от System. Net .Mail, однако MimeKit также поддерживает тип адреса group, определенный в rfc822 (позже обновленный rfc2822 и rfc5322), который выглядит следующим образом:

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

В сочетании с обычными адресами mailbox стиля в заголовке To:, например, это может выглядеть следующим образом:

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

Вернуться к вопросу в вашем заголовке: Is 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);
}

Чтобы выполнить sh то же самое с помощью MimeKit, вы можете сделать что-то вроде этого:

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

Имеет ли это смысл сейчас?

...