Sending e-mail is easy with System.Net.Mail.MailMessage class. Unfortunately, MSDN example only shows how to send e-mail to one recipient. It is possible to send email to multiple recipients, but what is the delimiter?
From my tests I found out, that accepted delimiter is comma or comma-and-space. Semicolon without space will cause FormatException.
This small program will try sending e-mails with different delimiters. Let’s see what happens:
string from = "test@goleszympansy.pl";
string[] tos = {"one@goleszympansy.pl, two@goleszympansy.pl",
"one@goleszympansy.pl,two@goleszympansy.pl",
"one@goleszympansy.pl; two@goleszympansy.pl",
"one@goleszympansy.pl;two@goleszympansy.pl"};
string subject = "Test mail";
string body = "GoleSzympansy";
string host = GetHost();
foreach (var to in tos)
{
try
{
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = host;
MailMessage mailMessage = new MailMessage(from, to, subject, body);
smtpClient.Send(mailMessage);
Console.WriteLine("Mail send success: {0}", to);
}
catch
{
Console.WriteLine("Mail send failed: {0}", to);
}
}
And this is a result:
So at first it seemed, that semicolon-and-space would also be valid delimiter. But what would be actually be received?
In the third case ("one@goleszympansy.pl;
two@goleszympansy.pl"), the first part before space, together with semicolon, is
considered to be recipient's name:
Summing up:
If you want to add more addresses, divide them by comma. And the space will divide display name and email address. The "To" property accepts following formats:
- "email@server.com"
- "email1@server1.com, email2@server2.com"
- "Name email@server.com"
- "name email@server1.com, email@server2.com"
etc...