如何使用MailMessage向多个收件人发送电子邮件?

时间:2014-05-06 01:21:29

标签: c# mailmessage

我在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();

4 个答案:

答案 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(";", ","));

供参考:

  1. https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage?view=netframework-4.8
  2. https://www.geeksforgeeks.org/c-sharp-replace-method/

答案 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);