题
我正在尝试使用C#中的System.Net.Mail.MailMessage
类来创建一个通过BCC
发送到电子邮件地址列表的电子邮件。我不想包含TO
地址,但似乎我必须这样做,因为如果我在MailMessage
构造函数中为<=>地址使用空字符串,我会收到异常。错误说明:
ArgumentException
The parameter 'addresses' cannot be an empty string.
Parameter name: addresses
当然可以仅使用<=>发送电子邮件,因为这不是SMTP的限制。
有解决方法吗?
解决方案
我认为如果你注释掉整个emailMessage.To.Add(sendTo);
行,它会发送To
字段为空的电子邮件。
其他提示
对内部邮件爆炸做同样的事情,你不希望人们一直回复所有。
将发送给您自己(或虚拟帐户),然后添加您的BCC列表。
您必须包含TO地址。只需将其发送到<!>“垃圾<!>”;你不介意收邮件的电子邮件地址。
它甚至不需要是真正的电子邮件地址,我通常使用Mailer@CompanyName.com
代表TO
,NoReply@CompanyName
代表FROM
。
只是不要在To-property上调用Add-method。
必须有一个地址。就是这种方式,因为原始的sendmail 80年代的实现和所有的SMTP邮件,我知道,具有相同的要求。您可以使用虚拟地址。
您可以使用临时假地址,然后在以下位置删除它:
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");
不隶属于 StackOverflow