使用BCC在C#中通过SMTP发送邮件而不使用TO

时间:2008-11-19 15:32:12

标签: c# email smtp bcc

我正在尝试使用C#中的System.Net.Mail.MailMessage类创建一封电子邮件,该电子邮件通过BCC发送到电子邮件地址列表。我不想包含TO地址,但似乎我必须这样做,因为如果我在TO构造函数中为MailMessage地址使用空字符串,则会出现异常。错误说明:

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

当然可以仅使用BCC发送电子邮件,因为这不是SMTP的限制。

有解决方法吗?

8 个答案:

答案 0 :(得分:11)

对内部邮件爆炸做同样的事情,你不希望人们一直回复所有。

发送给您自己(或虚拟帐户),然后添加您的BCC列表。

答案 1 :(得分:8)

我认为如果您注释掉整个emailMessage.To.Add(sendTo);行,它会将To字段的电子邮件发送为空。

答案 2 :(得分:2)

您必须包含TO地址。只需将其发送到您不介意收到邮件的“垃圾”电子邮件地址即可。

答案 3 :(得分:2)

它甚至不需要是真正的电子邮件地址,我通常Mailer@CompanyName.com使用TONoReply@CompanyName使用FROM

答案 4 :(得分:1)

只是不要在To-property上调用Add-method。

答案 5 :(得分:0)

必须有一个地址。就是这种方式,因为原始的sendmail 80年代的实现和所有的SMTP邮件,我知道,具有相同的要求。您可以使用虚拟地址。

答案 6 :(得分:0)

您可以使用临时假地址,然后在以下位置删除它:

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

答案 7 :(得分:0)

我认为您正在尝试做类似的事情:

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