使用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();
简单!
只需将传入的地址列表分割为“;” 字符,并将其添加到邮件消息中:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(address); }
在这个例子中, addresses
包含“ address1@example.com;address2@example.com
”。
正如Adam Miller在评论中所build议的那样,我会添加另一个解决scheme。
MailMessage(String from,String to)构造函数接受逗号分隔的地址列表。 所以如果你碰巧已经有一个逗号(',')分隔的列表,那么用法就像下面这样简单:
MailMessage Msg = new MailMessage(fromMail, addresses);
在这个特定的情况下,我们可以取代';' 为','仍然使用构造函数。
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
无论你喜欢这个还是接受的答案,都取决于你。 可以说,循环使意图更清楚,但是这个更短而且不难理解。 但是,如果你已经有一个逗号分隔列表,我认为这是要走的路。
我已经testing了这个使用下面的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);
- expression式“j = ++(i | i); j = ++(i&i);应该是一个左值错误?
- 任何区别“await Task.Run(); 返回;“和”返回Task.Run()“?
- C ++“多种types在一个声明”错误
- ASP.NET Web API中的自定义方法名称
- 尝试debuggingWCF服务代码(MSVS 2013)时,在“添加监视”函数中获取“expression式评估程序中的内部错误”
- 推荐的ServiceStack API结构
- C#4中的dynamic关键字是否支持扩展方法?
- 我如何使Visual Studio的构build非常冗长?
- 为什么std :: cout而不是简单的cout?