J'ai plusieurs destinataires d'e-mail stockés dans Sql Server. Lorsque je clique sur envoyer dans la page Web, il devrait envoyer un courrier électronique à tous les destinataires.
Voici le code de 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 scinder la liste d'adresses entrantes sur le ";" caractère, et les ajouter au message mail:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
mailMessage.To.Add(address);
}
Dans cet exemple, addresses
contient "[email protected];[email protected]
".
Comme suggéré par Adam Miller dans les commentaires, je vais ajouter une autre solution.
Le constructeur MailMessage (String from, String 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 (','), son 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 soutenir que la boucle rend l'intention plus claire, mais celle-ci est plus courte et non obscure. 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é cela en utilisant le script PowerShell suivant et en utilisant (,) entre les adresses. Cela a fonctionné pour moi!
$EmailFrom = "<[email protected]>";
$EmailPassword = "<password>";
$EmailTo = "<[email protected]>,<[email protected]>";
$SMTPServer = "<smtp.server.com>";
$SMTPPort = <port>;
$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);