如何使用System.Net.Mail发送电子邮件到多个地址

我有smtp电子邮件function。 它适用于单个地址,但在多个地址有问题。

我使用下面的代码行传递多个地址。

MailAddress to = new MailAddress("abc@gmail.com,xyz@gmail.com"); 

请让我知道这个问题,因为我没有得到任何错误。

 MailMessage msg = new MailMessage(); msg.Body = ....; msg.To.Add(...); msg.To.Add(...); SmtpClient smtp = new SmtpClient(); smtp.Send(msg); 

To是一个MailAddressCollection ,所以你可以添加你需要的地址。

如果您需要显示名称,请尝试以下操作:

 MailAddress to = new MailAddress( String.Format("{0} <{1}>",display_name, address)); 

尝试这个..

 using System; using System.Net.Mail; public class Test { public static void Main() { SmtpClient client = new SmtpClient("smtphost", 25); MailMessage msg = new MailMessage("x@y.com", "a@b.com,c@d.com"); msg.Subject = "sdfdsf"; msg.Body = "sdfsdfdsfd"; client.UseDefaultCredentials = true; client.Send(msg); } } 

StewieFG的build议是有效的,但如果你想添加收件人名称使用这个,与马可在上面发布,但电子邮件地址第一,显示名称第二:

 msg.To.Add(new MailAddress("your@email1.com","Your name 1")); msg.To.Add(new MailAddress("your@email2.com","Your name 2")); 

我认为你可以使用这个代码,以便有一个显示名称(也不同)的传出地址列表:

 //1.The ACCOUNT MailAddress fromAddress = new MailAddress("myaccount@myaccount.com", "my display name"); String fromPassword = "password"; //2.The Destination email Addresses MailAddressCollection TO_addressList = new MailAddressCollection(); //3.Prepare the Destination email Addresses list foreach (var curr_address in mailto.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries)) { MailAddress mytoAddress = new MailAddress(curr_address, "Custom display name"); TO_addressList.Add(mytoAddress); } //4.The Email Body Message String body = bodymsg; //5.Prepare GMAIL SMTP: with SSL on port 587 var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential(fromAddress.Address, fromPassword), Timeout = 30000 }; //6.Complete the message and SEND the email: using (var message = new MailMessage() { From = fromAddress, Subject = subject, Body = body, }) { message.To.Add(TO_addressList.ToString()); smtp.Send(message); } 

我的代码来解决这个问题:

 private void sendMail() { //This list can be a parameter of metothd List<MailAddress> lst = new List<MailAddress>(); lst.Add(new MailAddress("mouse@xxxx.com")); lst.Add(new MailAddress("duck@xxxx.com")); lst.Add(new MailAddress("goose@xxxx.com")); lst.Add(new MailAddress("wolf@xxxx.com")); try { MailMessage objeto_mail = new MailMessage(); SmtpClient client = new SmtpClient(); client.Port = 25; client.Host = "10.15.130.28"; //or SMTP name client.Timeout = 10000; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("from@email.com", "password"); objeto_mail.From = new MailAddress("from@email.com"); //add each email adress foreach (MailAddress m in lst) { objeto_mail.To.Add(m); } objeto_mail.Subject = "Sending mail test"; objeto_mail.Body = "Functional test for automatic mail :-)"; client.Send(objeto_mail); } catch (Exception ex) { MessageBox.Show(ex.Message); } } 
 namespace WebForms.Code.Logging { public class ObserverLogToEmail: ILog { private string from; private string to; private string subject; private string body; private SmtpClient smtpClient; private MailMessage mailMessage; private MailPriority mailPriority; private MailAddressCollection mailAddressCollection; private MailAddress fromMailAddress, toMailAddress; public MailAddressCollection toMailAddressCollection { get; set; } public MailAddressCollection ccMailAddressCollection { get; set; } public MailAddressCollection bccMailAddressCollection { get; set; } public ObserverLogToEmail(string from, string to, string subject, string body, SmtpClient smtpClient) { this.from = from; this.to = to; this.subject = subject; this.body = body; this.smtpClient = smtpClient; } public ObserverLogToEmail(MailAddress fromMailAddress, MailAddress toMailAddress, string subject, string content, SmtpClient smtpClient) { try { this.fromMailAddress = fromMailAddress; this.toMailAddress = toMailAddress; this.subject = subject; this.body = content; this.smtpClient = smtpClient; mailAddressCollection = new MailAddressCollection(); } catch { throw new SmtpException(SmtpStatusCode.CommandNotImplemented); } } public ObserverLogToEmail(MailAddressCollection fromMailAddressCollection, MailAddressCollection toMailAddressCollection, string subject, string content, SmtpClient smtpClient) { try { this.toMailAddressCollection = toMailAddressCollection; this.ccMailAddressCollection = ccMailAddressCollection; this.subject = subject; this.body = content; this.smtpClient = smtpClient; } catch { throw new SmtpException(SmtpStatusCode.CommandNotImplemented); } } public ObserverLogToEmail(MailAddressCollection toMailAddressCollection, MailAddressCollection ccMailAddressCollection, MailAddressCollection bccMailAddressCollection, string subject, string content, SmtpClient smtpClient) { try { this.toMailAddressCollection = toMailAddressCollection; this.ccMailAddressCollection = ccMailAddressCollection; this.bccMailAddressCollection = bccMailAddressCollection; this.subject = subject; this.body = content; this.smtpClient = smtpClient; } catch { throw new SmtpException(SmtpStatusCode.CommandNotImplemented); } }#region ILog Members // sends a log request via email. // actual email 'Send' calls are commented out. // uncomment if you have the proper email privileges. public void Log(object sender, LogEventArgs e) { string message = "[" + e.Date.ToString() + "] " + e.SeverityString + ": " + e.Message; fromMailAddress = new MailAddress("", "HaNN", System.Text.Encoding.UTF8); toMailAddress = new MailAddress("", "XXX", System.Text.Encoding.UTF8); mailMessage = new MailMessage(fromMailAddress, toMailAddress); mailMessage.Subject = subject; mailMessage.Body = body; // commented out for now. you need privileges to send email. // _smtpClient.Send(from, to, subject, body); smtpClient.Send(mailMessage); } public void LogAllEmails(object sender, LogEventArgs e) { try { string message = "[" + e.Date.ToString() + "] " + e.SeverityString + ": " + e.Message; mailMessage = new MailMessage(); mailMessage.Subject = subject; mailMessage.Body = body; foreach(MailAddress toMailAddress in toMailAddressCollection) { mailMessage.To.Add(toMailAddress); } foreach(MailAddress ccMailAddress in ccMailAddressCollection) { mailMessage.CC.Add(ccMailAddress); } foreach(MailAddress bccMailAddress in bccMailAddressCollection) { mailMessage.Bcc.Add(bccMailAddress); } if (smtpClient == null) { var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential("yourEmailAddress", "yourPassword"), Timeout = 30000 }; } else smtpClient.SendAsync(mailMessage, null); } catch (Exception) { throw; } } } 

我用“为”运营商。

 try { string s = textBox2.Text; string[] f = s.Split(','); for (int i = 0; i < f.Length; i++) { MailMessage message = new MailMessage(); // Create instance of message message.To.Add(f[i]); // Add receiver message.From = new System.Net.Mail.MailAddress(c);// Set sender .In this case the same as the username message.Subject = label3.Text; // Set subject message.Body = richTextBox1.Text; // Set body of message client.Send(message); // Send the message message = null; // Clean up } } catch (Exception ex) { MessageBox.Show(ex.Message); } 
 MailAddress fromAddress = new MailAddress (fromMail,fromName); MailAddress toAddress = new MailAddress(toMail,toName); MailMessage message = new MailMessage(fromAddress,toAddress); message.Subject = subject; message.Body = body; SmtpClient smtp = new SmtpClient() { Host = host, Port = port, enabHost = "smtp.gmail.com", Port = 25, EnableSsl = true, UseDefaultCredentials = true, Credentials = new NetworkCredentials (fromMail, password) }; smtp.send(message);