У меня есть несколько получателей электронной почты, хранящихся в 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();
c#
mailmessage
Четан Гоенка
источник
источник
MailMessage
иSmtpClient
экземпляры должны быть вusing
блоках.using
блоках» не равно «необходимо удалить». Во-вторых, в производственном коде, таком как веб-приложения, вы, как правило, захотите использовать вSendAsync
любом случае, который работает, как задумано, без необходимости удалятьSnmpClient
экземпляр.Ответы:
Легко!
Просто разделите список входящих адресов на ";" и добавьте их в почтовое сообщение:
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);
В этом конкретном случае мы можем заменить ";" for ',' и по-прежнему использовать конструктор.
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
Предпочитаете ли вы этот или принятый ответ, решать вам. Возможно, цикл делает намерение более ясным, но он короче и не затрудняет понимание. Но если у вас уже есть список, разделенный запятыми, я думаю, что это выход.
источник
to
параметр как «Строка, содержащая адрес получателя сообщения электронной почты». Я хочу использовать его, но не могу, если его поддержка может быть удалена.Согласно документации:
MailMessage.To свойство - Возвращает MailAddressCollection , который содержит список получателей этого сообщения электронной почты
Здесь MailAddressCollection имеет встроенный метод, называемый
public void Add(string addresses) 1. Summary: Add a list of email addresses to the collection. 2. Parameters: addresses: *The email addresses to add to the System.Net.Mail.MailAddressCollection. Multiple *email addresses must be separated with a comma character (",").
В твоем случае :
просто замените все; с участием ,
Msg.To.Add(toEmail.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);
источник
C#
, не связанный с PowerShell,.NET Framework
а толькоC#
. Если бы все делали то же самое, что и вы, у нас также были бы ответы на VB.NET, F # или даже C ++ на все вопросы, связанные с.NET Framework
. В конце концов, это тот же Framework, это просто вопрос перевода ... Вы понимаете мою мысль? StackOverflow станет действительно мусорным источником информации