.Net System.Mail.Message adding multiple "To" addresses
asp.net, system.net.mail
Solution
I wasn't able to replicate your bug:
var message = new MailMessage();
message.To.Add("user@example.com");
message.To.Add("user2@example.com");
message.From = new MailAddress("test@example.com");
message.Subject = "Test";
message.Body = "Test";
var client = new SmtpClient("localhost", 25);
client.Send(message);
Dumping the contents of the To: MailAddressCollection:
MailAddressCollection (2 items) DisplayName User Host Address
user example.com user@example.com user2 example.com user2@example.com
And the resulting e-mail as caught by smtp4dev:
Received: from mycomputername (mycomputername [127.0.0.1])
by localhost (Eric Daugherty's C# Email Server)
3/8/2010 12:50:28 PM
MIME-Version: 1.0
From: test@example.com
To: user@example.com, user2@example.com
Date: 8 Mar 2010 12:50:28 -0800
Subject: Test
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Test
Are you sure there's not some other issue going on with your code or SMTP server?
Problem
This question is pointless, except as an exercise in red herrings. The issue turned out to be a combination of my idiocy (NO ONE was being emailed as the host was not being specified and was incorrect in `web.config`) and the users telling me that they sometimes got the emails and sometimes didn't, when in reality they were NEVER getting the emails.** So, instead of taking proper steps to reproduce the problem in a controlled setting, I relied on user information and the "it works on my machine" mentality. Good reminder to myself and anyone else out there who is sometimes an idiot. I just hit something I think is inconsistent, and wanted to see if I'm doing something wrong, if I'm an idiot, or... ``` MailMessage msg = new MailMessage(); msg.To.Add("person1@example.com"); msg.To.Add("person2@example.com"); msg.To.Add("person3@example.com"); msg.To.Add("person4@example.com"); ``` Really only sends this email to 1 person, the last one. To add multiples I have to do this: ``` msg.To.Add("person1@example.com,person2@example.com,person3@example.com,person4@example.com"); ``` I don't get it. I thought I was adding multiple people to the `To` address collection, but what I was doing was replacing it. I think I just realized my error -- to add one item to the collection, use .To.Add(new MailAddress("person@example.com")) If you use just a `string`, it replaces everything it had in its list. Other people have tested and are not seeing this behavior. This is either a bug in my particular version of the framework, or more likely, an idiot maneuver by me.** Ugh. I'd consider this a rather large gotcha! Since I answered my own question, but I think this is of value to have in the Stack Overflow archive, I'll still ask it. Maybe someone even has an idea of other traps that you can fall into.