web-dev-qa-db-fra.com

Adresse multiple dans le constructeur MailAddress

j'essayais d'ajouter plusieurs adresses comme ceci.

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

mais jette l'erreur comme 

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

Vous ne pouvez pas utiliser le constructeur MailAddress pour spécifier plusieurs reçus, mais vous pouvez utiliser l'objet MailMessage comme indiqué ci-dessous.

Utilisation du constructeur MailMessage ( not MailAddress):

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

une autre façon est:

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

une autre façon est:

MailMessage msg = new MailMessage();
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
35

En réalité, le point-virgule n'est pas un délimiteur valide. Malheureusement, MSDN ne documente pas cela, je devais le découvrir moi-même. 

Si vous souhaitez ajouter d'autres adresses, divisez-les par une virgule. Et l’espace divisera le nom d’affichage et l’adresse électronique. La propriété "To" accepte les formats suivants:

etc...

J'ai écrit plus sur ce sujet dans ce blog

19
Tschareck

Il pourrait y avoir une question de pourquoi vous voulez faire cela? Quelque chose comme MailMessage.To est une MailAddressCollection dont la méthode Add est surchargée pour prendre plusieurs adresses de messagerie dans une chaîne, séparées par une virgule (voir http://msdn.Microsoft.com/en-us/library/ms144695.aspx ).

L’utilisation habituelle des objets MailAddress consiste à les ajouter à des courriers électroniques. Si vous avez plusieurs adresses, je suppose que vous souhaitez les ajouter à l’un des champs À, CC, etc., auquel cas la surcharge Ajouter vous convient parfaitement. S'il y a autre chose, vous devrez fournir plus de contexte à ce que vous essayez de faire.

2
Chris

Utilisez une virgule (,) comme séparateur à la place du point-virgule (;).

Si plusieurs adresses de messagerie séparées par un point-virgule (";") sont passées dans le paramètre address. une exception FormatException est déclenchée.

_ {Des exemples qui fonctionnent

MailAddressCollection.Add (String):

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"));
  ...
}
2
JohnB

Voici une autre variante de ce thème, FWIW:

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

Notez les virgules. Plus de détails peuvent être trouvés à MSDN ici .

1
Guest

@Tschareck

"Une virgule est utilisée pour séparer les éléments d'une liste d'adresses de messagerie. En conséquence, elle ne doit pas être utilisée dans les noms complets non cités de la liste. Les adresses de messagerie suivantes seraient autorisées" in http: // msdn. Microsoft.com/en-us/library/system.net.mail.mailaddress.aspx

Cordialement, Anarud

0
Anarud