在C#中使用BCC而无需TO发送邮件的SMTP方法

12

我正在尝试使用C#中的System.Net.Mail.MailMessage类来创建一封邮件,并通过BCC向一组电子邮件地址发送它。 我不想包括TO地址,但似乎必须这样做,因为如果我在MailMessage构造函数中使用空字符串作为TO地址,则会出现异常。 错误状态如下:

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

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

有没有其他方法解决这个问题?


我会向微软投诉这个问题。但在当前情况下,这并不能帮助你。 - Tim
2
抱怨总是有帮助的。它会给人一种温暖的憎恨感。 - bzlm
8个回答

12

针对不想让人一直使用“回复所有”按钮的内部邮件群发,做同样的操作。

将邮件发送给 自己 (或虚拟账户),然后添加密送列表。


12

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


3

即使不需要真实的电子邮件地址,我通常使用Mailer@CompanyName.com作为TO,并使用NoReply@CompanyName.com作为FROM


2

您需要填写一个收件人地址。可以发送到一个您不介意接收邮件的“垃圾”电子邮件地址。


我认为您不必包括收件人地址。 - Tommy Carlier

1

切勿在 To 属性上调用 Add 方法。


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

0

必须有一个收件人地址。自从80年代的原始sendmail和所有SMTP邮件发送程序的实现以来,它一直保持这样的状态,我知道的都有同样的要求。您可以只使用虚拟地址作为收件人。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接