Comment envoyer un courrier électronique à plusieurs destinataires avec MailMessage?

J’ai plusieurs destinataires de courrier électronique stockés dans Sql Server. Lorsque je clique sur Envoyer dans la page Web, il doit envoyer un courrier électronique à tous les destinataires. J’ai séparé les e-mails en utilisant “;”.

Voici le code du destinataire unique.

MailMessage Msg = new MailMessage(); MailAddress fromMail = new MailAddress(fromEmail); Msg.From = fromMail; Msg.To.Add(new MailAddress(toEmail)); if (ccEmail != "" && bccEmail != "") { Msg.CC.Add(new MailAddress(ccEmail)); Msg.Bcc.Add(new MailAddress(bccEmail)); } SmtpClient a = new SmtpClient("smtp server name"); a.Send(Msg); sreader.Dispose(); 

Facile!

Il suffit de diviser la liste des adresses entrantes sur le “;” caractère, et les append au message électronique:

 foreach (var address in addresses.Split(new [] {";"}, SsortingngSplitOptions.RemoveEmptyEnsortinges)) { mailMessage.To.Add(address); } 

Dans cet exemple, les addresses contiennent ” [email protected];[email protected] “.

Comme suggéré par Adam Miller dans les commentaires, je vais append une autre solution.

Le constructeur MailMessage (Ssortingng from, Ssortingng to) accepte une liste d’adresses séparées par des virgules. Donc, si vous avez déjà une liste séparée par des virgules (‘,’), l’utilisation est aussi simple que:

 MailMessage Msg = new MailMessage(fromMail, addresses); 

Dans ce cas particulier, nous pouvons remplacer le ‘;’ pour ‘,’ et toujours utiliser le constructeur.

 MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ",")); 

Que vous préfériez ceci ou la réponse acceptée, c’est à vous de décider. On peut dire que la boucle rend l’intention plus claire, mais c’est plus court et pas obscur. Mais si vous avez déjà une liste séparée par des virgules, je pense que c’est la voie à suivre.

J’ai testé ceci en utilisant le script powershell suivant et en utilisant (,) entre les adresses. Cela a fonctionné pour moi!

 $EmailFrom = ""; $EmailPassword = ""; $EmailTo = ","; $SMTPServer = ""; $SMTPPort = ; $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$SMTPPort); $SMTPClient.EnableSsl = $true; $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $EmailPassword); $Subject = "Notification from XYZ"; $Body = "this is a notification from XYZ Notifications.."; $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body);