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

Che*_*nka 78 c# mailmessage

我有多个电子邮件收件人存储在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();
Run Code Online (Sandbox Code Playgroud)

Bre*_*een 164

简单!

只需将传入的地址列表拆分为";" 字符,并将它们添加到邮件消息:

foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
    mailMessage.To.Add(address);    
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,addresses包含" address1@example.com;address2@example.com".

  • 我迟到了,但MailMessage(字符串from,string to)构造函数接受以逗号分隔的地址列表.所以,你可以做一些像新的MailMessage(fromMail,addresses.replace(";",","))也许使用替换不是更好,但我觉得我应该评论这个,以防其他人已经逗号分隔串!那就不需要分裂或替换了. (50认同)

Are*_*eks 73

正如Adam Miller在评论中所建议的,我将添加另一种解决方案.

MailMessage(String from,String to)构造函数接受以逗号分隔的地址列表.因此,如果你碰巧已经有一个逗号(',')分隔列表,那么用法很简单:

MailMessage Msg = new MailMessage(fromMail, addresses);
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,我们可以替换';' for','仍然使用构造函数.

MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
Run Code Online (Sandbox Code Playgroud)

无论您喜欢这个还是接受的答案,都取决于您.可以说循环使意图更清晰,但这更短,而且不明显.但是,如果您已经有逗号分隔列表,我认为这是要走的路.

  • 由于它导致了我管理的实现此问题的应用程序的问题,因此应检查尾随字符是否为分号并在运行replace命令之前将其删除.我不确定尾随分号是否被视为有效的收件人列表,但人们可能会习惯通过Outlook等应用程序看到一个尾随的分号.您传递给MailMessage的逗号分隔列表中不能有逗号. (2认同)
  • 绝对是一个功能,但文档要么稀疏,要么不存在。我必须经历大约 5 个方法调用才能得到第一个提示,证明这是真的。https://referencesource.microsoft.com/#System/net/System/Net/mail/MailAddressParser.cs,542ab7043da2bb26 (2认同)

Shr*_*gam 14

根据Microsoft 文档,该MailMessage.To属性:

获取包含此电子邮件收件人的地址集合。

该集合采用MailAddressCollection对象的形式,该对象有一个内置Add(string)方法:

将电子邮件地址列表添加到集合中。

public void Add (string addresses);
Run Code Online (Sandbox Code Playgroud)

参数

addresses- 细绳

要添加到 的电子邮件地址MailAddressCollection。多个电子邮件地址必须用逗号字符(“,”)分隔。

正如您所看到的,电子邮件地址必须用逗号分隔,而不是分号。您可以使用以下方法解决该错误replace()

Msg.To.Add(toEmail.replace(";", ","));
Run Code Online (Sandbox Code Playgroud)

这将产生一个以逗号分隔的电子邮件地址列表。