Многоадресный адрес в конструкторе MailAddress - PullRequest
23 голосов
/ 16 марта 2012

Я пытался добавить несколько адресов к этому адресу.

MailAddress mailAddressTo = new MailAddress("sample@google.com;sample1@google.com","Vetrivelmp");

, но выдает ошибку типа

An invalid character was found in the mail header: ';'

Ответы [ 7 ]

38 голосов
/ 16 марта 2012

Вы не можете использовать конструктор MailAddress для указания нескольких поступлений, но вы можете использовать объект MailMessage, как показано ниже.

Использование конструктора MailMessage ( not MailAddress):

var msg = new MailMessage("from@domain.com", "to1@gmail.com, to2@gmail.com");

другой способ:

MailMessage mail = new MailMessage();
mail.To.Add("me@mycompany.com,him@hiscompany.com,her@hercompany.com");

Другой способ:

MailMessage msg = new MailMessage();
msg.To.Add("person1@domain.com");
msg.To.Add("person2@domain.com");
msg.To.Add("person3@domain.com");
msg.To.Add("person4@domain.com");
20 голосов
/ 22 марта 2012

На самом деле точка с запятой не является допустимым разделителем. К сожалению, MSDN не документирует это, пришлось выяснить это самостоятельно.

Если вы хотите добавить больше адресов, разделите их запятыми. И пространство будет разделять отображаемое имя и адрес электронной почты. Свойство «Кому» принимает следующие форматы:

  • "email@server.com"
  • "email1@server1.com, email2@server2.com"
  • «Имя email@server.com»
  • "name email@server1.com, email@server2.com"

и т.д ...

Я написал больше об этой теме в этом сообщении в блоге

4 голосов
/ 23 ноября 2013

Используйте запятую (,) в качестве разделителя вместо точки с запятой (;).

Если несколько адресов электронной почты разделены точкой с запятой (";")передаются в параметре адресов.Возникает исключение FormatException.

Примеры, которые работают

MailAddressCollection.Add (String):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add("sample@google.com, sample1@google.com");
  ...
}

MailAddressCollection.Add (MailAddress):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add(new MailAddress("sample@google.com", "Vetrivelmp"));
  msg.To.Add(new MailAddress("sample1@google.com", "Vetrivelmp1"));
  ...
}
2 голосов
/ 16 марта 2012

Может возникнуть вопрос, почему вы хотите это сделать? Что-то вроде MailMessage.To - это MailAddressCollection, чей метод Add перегружен для получения нескольких адресов электронной почты в строке, разделенных запятой (см. http://msdn.microsoft.com/en-us/library/ms144695.aspx).

Обычно объекты MailAddress используются для добавления их в электронные письма, и если у вас есть несколько адресов, то я предполагаю, что вы хотите добавить их в одно из полей «Кому», «CC» и т. Д. В этом случае перегрузка «Добавить» должна вам помочь. мило. Если есть что-то еще, вам придется предоставить больше контекста для того, что вы пытаетесь сделать.

1 голос
/ 23 декабря 2013

Вот еще один вариант этой темы, FWIW:

    SenderEmail = "me@mine.com";
    RecipientEmail = "this@this.com, that@that.com, other@theother.com";
    MailMessage msg = new MailMessage(SenderEmail, RecipientEmail);

Обратите внимание на запятые.Более подробную информацию можно найти по адресу MSDN здесь .

0 голосов
/ 04 декабря 2013

Вот что у меня сработало.

  MailMessage m_message = new MailMessage();
  string m_addys = "addy2@foo.com,addy1@foo.com";
  m_message.To.Add(m_addys);
0 голосов
/ 20 июня 2013

@ Tschareck

"Запятая используется для разделения элементов в списке почтовых адресов. В результате запятая не должна использоваться в отображаемых в кавычках отображаемых именах в списке. Следующие почтовые адреса будутразрешено "в http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx

С уважением, Анаруд

...