编辑:这个问题是无意义的,除了作为一个练习在红色herrings。这个问题结果是我的愚蠢的组合(NO ONE是通过电子邮件发送,因为主机没有被指定,在web.config中不正确),用户告诉我,他们有时得到电子邮件,有时没有,当在现实中,他们从来没有得到电子邮件。
因此,我不是采取适当的步骤在受控的环境中重现问题,而是依赖于用户信息和“它在我的机器上工作”的心态。
好的提醒我自己和任何人在那里有时是一个白痴。
我只是碰到我认为不一致的东西,想看看我做错了什么,如果我是个白痴,或者…
MailMessage msg = new MailMessage(); msg.To.Add("person1@domain.com"); msg.To.Add("person2@domain.com"); msg.To.Add("person3@domain.com"); msg.To.Add("person4@domain.com");
真的只发送这封电子邮件给1个人,最后一个。
要添加多个,我必须这样做:
msg.To.Add("person1@domain.com,person2@domain.com,person3@domain.com,person4@domain.com");
我不明白。我以为我要添加多个人到地址集合,但我正在做的是替换它。
我想我只是意识到我的错误 – 添加一个项目到集合,使用
.To.Add(new MailAddress(“person@domain.com”))
如果你只使用一个字符串,它会取代它在它的列表中的一切。
编辑:其他人已经测试,没有看到这种行为。这是我的特定版本的框架中的错误,或者更可能是我的白痴操作。
啊。我认为这是一个相当大的骗子!因为我回答了我自己的问题,但我认为这是有价值的在stackoverflow存档,我仍然会问。也许有人甚至有一个想法,你可以陷入其他陷阱。
解决方法
我无法复制您的错误:
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);
倾销的内容To:MailAddressCollection:
MailAddressCollection (2 items)
DisplayName User Host Addressuser example.com user@example.com
user2 example.com user2@example.com
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
您确定您的代码或SMTP服务器没有发生其他问题吗?