Отправка почты через SMTP в C# с использованием BCC без TO

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

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

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

Это можно обойти?

7 ответов

Решение

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

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

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

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

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

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

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

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);
}

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

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");

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

Другие вопросы по тегам