我正在尝试使用C#中的System.Net.Mail.MailMessage
类创建一封电子邮件,该电子邮件通过BCC
发送到电子邮件地址列表。我不想包含TO
地址,但似乎我必须这样做,因为如果我在TO
构造函数中为MailMessage
地址使用空字符串,则会出现异常。错误说明:
ArgumentException
The parameter 'addresses' cannot be an empty string.
Parameter name: addresses
当然可以仅使用BCC
发送电子邮件,因为这不是SMTP的限制。
有解决方法吗?
答案 0 :(得分:11)
对内部邮件爆炸做同样的事情,你不希望人们一直回复所有。
将发送给您自己(或虚拟帐户),然后添加您的BCC列表。
答案 1 :(得分:8)
我认为如果您注释掉整个emailMessage.To.Add(sendTo);
行,它会将To
字段的电子邮件发送为空。
答案 2 :(得分:2)
您必须包含TO地址。只需将其发送到您不介意收到邮件的“垃圾”电子邮件地址即可。
答案 3 :(得分:2)
它甚至不需要是真正的电子邮件地址,我通常Mailer@CompanyName.com
使用TO
,NoReply@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");