我正在尝试使用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代表TONoReply@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");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top