Отправка одного и того же System.Net.Mail.MailMessage нескольким получателям

У меня есть метод, который в основном имеет метод «SendEmail» (позже он будет использоваться службой WCF)

Он имеет такие параметры, как «Тема», «Тело» и т. д. и строку [] получателей. Что я делаю, так это создаю MailMessage на основе параметров, а затем отправляю его с помощью smtp — я знаю, что MailMessage имеет To MailAddressCollection, но если я добавлю к нему каждый адрес, сообщение будет отправлено всем и каждому человеку в коллекция.

То, что я хочу сделать, это отправить его им отдельно.

Есть ли способ сделать это, кроме создания отдельного почтового сообщения для каждого элемента в массиве Recipient и отправки его таким образом? Я тоже не хочу просто отправлять им BCC... насколько я знаю, это все еще записывается в заголовках почты, и это не особенно элегантно.


person Alex    schedule 10.12.2009    source источник
comment
Скрытая копия не записывается в заголовок почты, получатель(и) никогда не сможет увидеть, кому еще было отправлено это письмо, когда вы используете скрытую копию. SMTP-сервер отфильтровывает этот заголовок сообщения.   -  person Tobias    schedule 20.03.2013


Ответы (2)


Я думаю, что в этом конкретном сценарии вы ограничены созданием отдельного объекта MailMessage.

person James    schedule 10.12.2009
comment
Я согласен, но вам не обязательно создавать новый объект, просто пройдитесь по массиву получателей и измените адрес TO объекта MailMessage, а затем повторно отправьте в цикле, пока не достигнете последнего получателя. - person ryanulit; 10.12.2009
comment
как я могу изменить адрес TO ..? Это коллекция - я могу использовать To.Clear(), а затем To.Add([email protected]) или что-то подобное... - person Alex; 10.12.2009
comment
@alex да, вам придется очистить список и добавить нового получателя - person James; 10.12.2009
comment
Единственное, что нужно иметь в виду при таком подходе, это то, что если у вас есть люди с копиями, они будут получать электронное письмо, отправленное им каждый раз, когда вы отправляете электронное письмо определенному человеку. - person Dan Appleyard; 30.07.2010

может быть, вы можете использовать что-то вроде этого:

MailMessage msg= new MailMessage();
msg.Subject = *your subject text*;
msg.From = new MailAddress(*your address*, *your title*;);
msg.Body = *your body text*;;

foreach (DataRow row in dsRecipients .Tables[0].Rows)
{
    foreach (DataColumn col in dsRecipients .Tables[0].Columns)
    {
        msg.To.Clear();
        msg.To.Add(new MailAddress((string)row[col]));
        server.Send(msg);
    }
}

где dsRecipients — это набор данных, заполненный вашими получателями.

person Sergio Heredero    schedule 26.11.2010