Как отправить письмо нескольким получателям, получить помощь?
У меня есть несколько получателей электронной почты, хранящихся в Sql Server. Когда я нажимаю "отправить" на веб-странице, он должен отправить электронное письмо всем получателям.Я разделил электронные письма с помощью ';'.
Ниже приведен один код получателя.
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();
3 ответа:
легко!
просто разделите список входящих адресов на символ"; " и добавьте их в сообщение электронной почты:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(address); }
В этом примере
addresses
содержит "address1@example.com;address2@example.com
".
Как полагает Адам Миллер в комментариях, я добавлю еще одно решение.
конструктор MailMessage(String from, String to) принимает список адресов, разделенных запятыми. Поэтому, если у вас уже есть разделенный запятыми (',') список, использование так же просто, как:
MailMessage Msg = new MailMessage(fromMail, addresses);
в этом конкретном случае мы можем заменить ';' Для', ' и по-прежнему использовать конструктор.
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
предпочитаете ли вы это или принятый ответ, это зависит от вас. Возможно, цикл делает намерение более ясным, но это короче и не неясно. Но если у вас уже есть список, разделенный запятыми, я думаю, что это путь.
Я проверил это, используя следующий сценарий powershell и используя (,) между адресами. Это сработало для меня!
$EmailFrom = "<from@any.com>"; $EmailPassword = "<password>"; $EmailTo = "<to1@any.com>,<to2@any.com>"; $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);