Отправка почты через SMTP в C # с использованием BCC без TO - PullRequest
10 голосов
/ 19 ноября 2008

Я пытаюсь использовать класс System.Net.Mail.MailMessage в C # для создания электронного письма, которое отправляется на список адресов электронной почты через BCC. Я не хочу включать адрес TO, но, похоже, мне это нужно, потому что я получаю исключение, если использую пустую строку для адреса TO в конструкторе MailMessage. Ошибка гласит:

ArgumentException
The parameter 'addresses' cannot be an empty string.
Parameter name: addresses

Конечно, можно отправить электронное письмо, используя только BCC, поскольку это не является ограничением SMTP.

Есть ли способ обойти это?

Ответы [ 8 ]

11 голосов
/ 19 ноября 2008

Сделайте то же самое, что вы делаете для внутренних почтовых рассылок, когда вы не хотите, чтобы люди постоянно отвечали всем.

Отправьте на самостоятельно (или на фиктивную учетную запись), затем добавьте список BCC.

8 голосов
/ 25 июня 2009

Я думаю, что если вы закомментируете всю строку emailMessage.To.Add(sendTo);, он отправит письмо с пустым полем To.

2 голосов
/ 19 ноября 2008

Это даже не должен быть реальный адрес электронной почты, я обычно использую Mailer@CompanyName.com для TO и NoReply@CompanyName для FROM.

2 голосов
/ 19 ноября 2008

Вы должны указать адрес TO. Просто отправьте его на «нежелательный» адрес электронной почты, на который вы не против получить почту.

1 голос
/ 25 июня 2009

Только не вызывайте метод Add для свойства To.

0 голосов
/ 20 марта 2019

Я думаю, вы пытались сделать что-то вроде:

var msg = new MailMessage("no-reply@notreal.com", "");

Вот почему вы видите сообщение об ошибке.

Вместо этого попробуйте что-то вроде этого:

MailMessage msg = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.notreal.com");
msg.From = new MailAddress("no-reply@notreal.com");
//msg.To.Add("target@notreal.com"); <--not needed
msg.Bcc.Add("BCCtarget@notreal.com");
0 голосов
/ 08 июня 2017

Вы можете использовать временный поддельный адрес, а затем удалить его сразу после:

MailMessage msg = new MailMessage(from, "fake@example.com");
msg.To.Clear();
foreach (string email in bcc.Split(';').Select(x => x.Trim()).Where(x => x != ""))
{
     msg.Bcc.Add(email);
}
0 голосов
/ 17 июля 2014

Должен иметь адрес. Так было со времен первоначальной реализации sendmail в 80-х годах, и все почтовые программы SMTP, о которых я знаю, имеют одинаковые требования. Вы можете просто использовать фиктивный адрес для.

...