Отправка электронной почты нескольким получателям с MailMessage
У меня есть несколько получателей электронной почты, хранящихся на сервере Sql. Когда я нажимаю "Отправить" на веб-странице, он должен отправить письмо всем получателям. У меня есть отдельные сообщения электронной почты, используя ";".
Ниже приведен один код получателя.
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();
Ответы
Ответ 1
Легко!
Просто разделите список входящих адресов на ";" символ и добавьте их в почтовое сообщение:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
mailMessage.To.Add(address);
}
В этом примере addresses
содержит "[email protected];[email protected]
".
Ответ 2
Как было предложено Адамом Миллером в комментариях, я добавлю еще одно решение.
Конструктор MailMessage (String from, String to) принимает список адресов, разделенных запятыми. Итак, если у вас уже есть раздел с запятой (','), использование будет таким же простым, как:
MailMessage Msg = new MailMessage(fromMail, addresses);
В этом конкретном случае мы можем заменить ';' для ',' и все еще использовать конструктор.
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
Предпочитаете ли вы это или принятый ответ на него. Возможно, петля делает цель более ясной, но она короче и не скрыта. Но если у вас уже есть список, разделенный запятыми, я думаю, что это путь.
Ответ 3
Я тестировал это, используя следующую powershell script и используя (,) между адресами. Это сработало для меня!
$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);