How to send email to multiple address using System.Net.Mail

C#.NetSmtp

C# Problem Overview


I have smtp email functionality. it works for single address but has problem in multiple address.

i am passing multiple addresses using following line of code.

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

Please let me know the problem as i am not getting any error.

C# Solutions


Solution 1 - C#

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 this:

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

Solution 2 - C#

try this..

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

Solution 3 - C#

I think you can use this code in order to have List of outgoing Addresses having a display Name (also different):

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

Solution 4 - C#

StewieFG suggestion is valid but if you want to add the recipient name use this, with what Marco has posted above but is email address first and display name second:

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

Solution 5 - C#

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("[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);
    }
}

Solution 6 - C#

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

Solution 7 - C#

I'm used "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);
}

Solution 8 - C#

 string[] MultiEmails = email.Split(',');
 foreach (string ToEmail in MultiEmails)
 {
    message.To.Add(new MailAddress(ToEmail)); //adding multiple email addresses
 }

Solution 9 - C#

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDenishView Question on Stackoverflow
Solution 1 - C#MarcoView Answer on Stackoverflow
Solution 2 - C#Hari GillalaView Answer on Stackoverflow
Solution 3 - C#Liuke YZFView Answer on Stackoverflow
Solution 4 - C#David AleuView Answer on Stackoverflow
Solution 5 - C#daniele3004View Answer on Stackoverflow
Solution 6 - C#user3800800View Answer on Stackoverflow
Solution 7 - C#Perviz HamidzadeView Answer on Stackoverflow
Solution 8 - C#KMRView Answer on Stackoverflow
Solution 9 - C#RamaView Answer on Stackoverflow