Cómo enviar un correo electrónico a varias direcciones usando System.Net.Mail

Tengo la funcionalidad de correo smtp. funciona para una sola dirección pero tiene problemas en varias direcciones.

Paso varias direcciones usando la siguiente línea de código.

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

Por favor, avíseme el problema, ya que no estoy recibiendo ningún error.

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

To es una MailAddressCollection , por lo que puede agregar cuántas direcciones necesita.

Si necesita un nombre para mostrar, intente esto:

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

prueba esto..

 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); } } 

Creo que puede usar este código para tener una lista de direcciones salientes que tengan un nombre para mostrar (también diferente):

 //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); } 

La sugerencia de StewieFG es válida, pero si desea agregar el nombre del destinatario, use esto, con lo que Marco ha publicado anteriormente, pero primero es la dirección de correo electrónico y luego se muestra el nombre:

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

Mi código para resolver este problema:

 private void sendMail() { //This list can be a parameter of metothd List lst = new List(); 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; } } } 

Soy un operador “para”.

 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); } 
  string[] MultiEmails = email.Split(','); foreach (string ToEmail in MultiEmails) { message.To.Add(new MailAddress(ToEmail)); //adding multiple email addresses } 
 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);