Несколько адресов в конструкторе MailAddress

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

MailAddress mailAddressTo = new MailAddress("[email protected];[email protected]","Vetrivelmp");

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

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

person Vetrivel mp    schedule 16.03.2012    source источник


Ответы (7)


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

Используя конструктор MailMessage (не MailAddress):

var msg = new MailMessage("[email protected]", "[email protected], [email protected]");

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

MailMessage mail = new MailMessage();
mail.To.Add("[email protected],[email protected],[email protected]");

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

MailMessage msg = new MailMessage();
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
person Massimiliano Peluso    schedule 16.03.2012
comment
чем отличается мой от твоего? - person Vetrivel mp; 16.03.2012
comment
видите, я знаю это, но как установить в самом конструкторе? - person Vetrivel mp; 16.03.2012
comment
Для начала у него есть объект MailMessage. На самом деле я немного объяснил это в своем ответе. простой ответ заключается в том, что mail.To — это MailAddressCollection, который позволяет использовать несколько адресов электронной почты. MailAddress всегда содержит только один адрес (факт единственного числа может помочь вам запомнить это). - person Chris; 16.03.2012
comment
да, но если я даю формат, например, [email protected]‹sapce›;‹sapce›sample1&google.com. требуется второй идентификатор электронной почты и отправка почты. это правильный функционал? - person Vetrivel mp; 16.03.2012
comment
это будет работать с новым MailAddress([email protected], Vetrivelmp); - person Massimiliano Peluso; 16.03.2012
comment
вы знаете, почему это происходит? - person Vetrivel mp; 16.03.2012
comment
даже если есть проблема с объектом MailAdress, вы должны использовать MailMessage для нескольких адресов, поскольку MailAddress предназначен только для одного адреса - person Massimiliano Peluso; 16.03.2012
comment
Будет ли mail.To = "[email protected];[email protected];[email protected]"; действительно работать? MailMessage.To является объектом MailAddressCollection. Вы не можете назначить ему строку — вам нужно будет использовать метод .Add, и ваш список адресов электронной почты должен быть разделен запятыми, а не точками с запятой. - person Matt Hogan-Jones; 08.07.2014
comment
@MassimilianoPeluso Ваш первый пример кода выдает ошибку. Вторая строка должна читаться как mail.To.Add("[email protected],[email protected],[email protected]"); - person snumpy; 10.12.2014
comment
@MattJones исправил мой ответ. Спасибо! - person Massimiliano Peluso; 10.12.2014
comment
@snumpy Я исправил свой ответ. Спасибо! - person Massimiliano Peluso; 10.12.2014
comment
@AdamMiller Я думаю, что этот ответ лучше отвечает на вопрос о нескольких адресах в конструкторе MailAddress. Но я согласен, что ответ Чарека более правильный, потому что он объясняет использование точки с запятой в качестве разделителя адресов, несмотря ни на что. - person Arkaine55; 20.09.2016

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

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

так далее...

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

person Tschareck    schedule 22.03.2012
comment
В вашем последнем примере, "name [email protected], [email protected]", MailMessage интерпретировал тест, который я провел, как имя электронной почты в качестве префикса электронной почты. Пришлось сделать так: "Adam Miller <[email protected]>" - person Adam Miller; 28.05.2015
comment
Разделитель теперь есть в документации - docs.microsoft.com/en-us/dotnet/api/ - person Ralph Willgoss; 26.03.2019

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

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

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

MailAddressCollection.Добавить(Строка):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add("[email protected], [email protected]");
  ...
}

MailAddressCollection.Add(MailAddress):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp"));
  msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp1"));
  ...
}
person JohnB    schedule 23.11.2013

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

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

person Chris    schedule 16.03.2012
comment
Причина в том, что у меня есть предопределенный код, который я не должен менять. так можно ли добавить несколько идентификаторов в конструктор почтового адреса или нет? - person Vetrivel mp; 16.03.2012
comment
Нет, ты не можешь. Объект MailAddress предназначен для одного почтового адреса. msdn.microsoft.com/en-us/library/ — это документы, которые, как мы надеемся, должны ответить на любые другие ваши вопросы по объекту. - person Chris; 16.03.2012

Вот еще одна вариация на эту тему, FWIW:

    SenderEmail = "[email protected]";
    RecipientEmail = "[email protected], [email protected], [email protected]";
    MailMessage msg = new MailMessage(SenderEmail, RecipientEmail);

Обратите внимание на запятые. Дополнительные сведения можно найти в MSDN здесь.

person Guest    schedule 23.12.2013

@Чарек

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

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

person Anarud    schedule 20.06.2013

Это то, что сработало для меня.

  MailMessage m_message = new MailMessage();
  string m_addys = "[email protected],[email protected]";
  m_message.To.Add(m_addys);
person smoore4    schedule 04.12.2013
comment
Это не делает то, что вы думаете. Это отправляет электронное письмо только на адрес [email protected], а имя человека будет отображаться как [email protected]. - person Judah Gabriel Himango; 24.01.2018
comment
Ты прав. Должно быть так: [email protected], [email protected]. И это строка, а не MailAddress. - person smoore4; 24.01.2018