我在Sql Server中存储了多个电子邮件收件人。当我点击网页上的发送时,它应该向所有收件人发送电子邮件。我使用&#39 ;;'分离了电子邮件。
以下是单个收件人代码。
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();
答案 0 :(得分:152)
容易!
只需将传入地址列表拆分为";"字符,并将其添加到邮件消息:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
mailMessage.To.Add(address);
}
在此示例中,addresses
包含" address1@example.com;address2@example.com
"。
答案 1 :(得分:68)
正如Adam Miller在评论中所建议的那样,我将添加另一种解决方案。
MailMessage(String from,String to)构造函数接受以逗号分隔的地址列表。因此,如果您恰好已经使用逗号(',')分隔列表,则使用方法非常简单:
MailMessage Msg = new MailMessage(fromMail, addresses);
在这种特殊情况下,我们可以替换';' for','仍然使用构造函数。
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
无论您喜欢这个还是接受的答案,都取决于您。可以说循环使意图更清晰,但这更短,而且不明显。但是,如果您已经有逗号分隔列表,我认为这是要走的路。
答案 2 :(得分:1)
根据文档:
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(";", ","));
供参考:
答案 3 :(得分:-2)
我使用以下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);