.Net System. Почта. Сообщение, добавляющее несколько "К" адресам

Править: Этот вопрос бессмыслен, за исключением упражнения в отвлекающих маневрах. Проблема оказалась комбинацией моего идиотизма (НИКТО не посылался по электронной почте, поскольку хост не указывался и был неправильным в 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 набор адреса, но что я делал, заменял его.

Я думаю, что просто осознал свою ошибку - чтобы добавить один объект к набору, использовать.To. Добавьте (новый MailAddress ("person@domain.com"))

Если Вы используете просто a string, это заменяет все, что это имело в его списке.Править: Другие люди протестировали и не видят это поведение. Это - или ошибка в моей конкретной версии платформы, или более вероятно, слабоумный маневр мной.

Тьфу. Я считал бы это довольно большим глюком! Так как я ответил на свой собственный вопрос, но я думаю, что это значимо, чтобы иметь в архиве stackoverflow, я все еще спрошу это. Возможно, у кого-то даже есть идея других прерываний, что можно упасть в.

40
задан Ian R. O'Brien 13 February 2013 в 16:01
поделиться

4 ответа

Я не смог воспроизвести вашу ошибку:

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 Address

user example.com user@example.com
user2 example.com user2@example.com

И полученное письмо, пойманное 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

Вы уверены, что нет какой-то другой проблемы с вашим кодом или SMTP сервером?

33
ответ дан 27 November 2019 в 01:46
поделиться

Добавьте несколько объектов System.MailAdress, чтобы получить то, что вы хотите.

3
ответ дан 27 November 2019 в 01:46
поделиться

Вы можете сделать это либо с несколькими объектами System.Net.Mail.MailAddress , либо предоставить одну строку, содержащую все адреса, разделенные запятыми

{ {1}}
10
ответ дан 27 November 2019 в 01:46
поделиться

Можно попробовать поместить e-mail в строку через запятую ("person1@domain.com, person2@domain.com"):

C#:

ArrayList arEmails = new ArrayList();
arEmails.Add("person1@domain.com");
arEmails.Add("person2@domain.com");
           
string strEmails = string.Join(", ", arEmails);

VB.NET если интересно:

Dim arEmails As New ArrayList
arEmails.Add("person1@domain.com")
arEmails.Add("person2@domain.com")

Dim strEmails As String = String.Join(", ", arEmails)
5
ответ дан 27 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: