Come inviare e-mail a più indirizzi utilizzando System.Net.Mail

Ho la funzionalità email smtp. funziona per un singolo indirizzo ma ha problemi in più indirizzi.

sto passando più indirizzi usando la seguente riga di codice.

MailAddress to = new MailAddress("[email protected],[email protected]"); 

Per favore fatemi sapere il problema in quanto non ricevo alcun errore.

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

To è un MailAddressCollection , quindi puoi aggiungere quanti indirizzi hai bisogno.

Se hai bisogno di un nome visualizzato, prova questo:

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

prova questo..

 using System; using System.Net.Mail; public class Test { public static void Main() { SmtpClient client = new SmtpClient("smtphost", 25); MailMessage msg = new MailMessage("[email protected]", "[email protected],[email protected]"); msg.Subject = "sdfdsf"; msg.Body = "sdfsdfdsfd"; client.UseDefaultCredentials = true; client.Send(msg); } } 

Penso che tu possa usare questo codice per avere l’elenco degli indirizzi in uscita con un nome visualizzato (anche diverso):

 //1.The ACCOUNT MailAddress fromAddress = new MailAddress("[email protected]", "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); } 

Il suggerimento di StewieFG è valido, ma se vuoi aggiungere il nome del destinatario usa questo, con quello che Marco ha pubblicato sopra ma è l’indirizzo email prima e visualizza il secondo nome:

 msg.To.Add(new MailAddress("[email protected]","Your name 1")); msg.To.Add(new MailAddress("[email protected]","Your name 2")); 

Il mio codice per risolvere questo problema:

 private void sendMail() { //This list can be a parameter of metothd List lst = new List(); lst.Add(new MailAddress("[email protected]")); lst.Add(new MailAddress("[email protected]")); lst.Add(new MailAddress("[email protected]")); lst.Add(new MailAddress("[email protected]")); 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("[email protected]", "password"); objeto_mail.From = new MailAddress("[email protected]"); //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; } } } 

Sono usato “per” operatore.

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