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("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
Really only sends this email to 1 person, the last one.
To add multiples I have to do this:
msg.To.Add("[email protected],[email protected],[email protected],[email protected]");
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("[email protected]"))
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.
I wasn't able to replicate your bug:
var message = new MailMessage();
message.To.Add("[email protected]");
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
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 Addressuser example.com [email protected]
user2 example.com [email protected]
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: [email protected]
To: [email protected], [email protected]
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?