How to send an email to multiple addresses using System.Net.Mail

I have smtp email function. It works for a single address, but has a problem with multiple addresses.

I am passing multiple addresses using the following line of code.

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

Please let me know about the problem as I am not getting any errors.

+46
c # smtp
Sep 21 '11 at 11:29
source share
8 answers
 MailMessage msg = new MailMessage(); msg.Body = ....; msg.To.Add(...); msg.To.Add(...); SmtpClient smtp = new SmtpClient(); smtp.Send(msg); 

To is a MailAddressCollection , so you can add how many addresses you need.

If you need a display name, try the following:

 MailAddress to = new MailAddress( String.Format("{0} <{1}>",display_name, address)); 
+73
Sep 21 '11 at 11:31
source share

try it.

 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); } } 
+21
Sep 21 '11 at 11:33
source share

The StewieFG proposal is valid, but if you want to add the recipient's name, use this so that Marco posted above, but first the email address and middle name:

 msg.To.Add(new MailAddress("your@email1.com","Your name 1")); msg.To.Add(new MailAddress("your@email2.com","Your name 2")); 
+10
Sep 21 '11 at 13:11
source share

I think you can use this code to have a list of outgoing addresses that have a display name (also different):

 //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); } 
+9
Dec 17 '14 at 11:15
source share

My code to solve this problem:

 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); } } 
+2
01 Feb '16 at 10:16
source share
 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; } } } 
+1
Aug 02 '15 at 3:13
source share

I use the "for" operator.

 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); } 
+1
Aug 09 '15 at 17:04
source share
 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); 
-one
Oct. 14 '14 at 4:24
source share



All Articles