如何修复向多个收件人发送邮件时抛出的异常?

Den*_*ail 11 c# email .net-4.0

在下面的代码片段中,我在'this.Recipients'上获得了FormatException.更具体地说,消息是"在邮件头中找到了无效字符:';'".

收件人是由分号(';'字符)分隔的三个电子邮件地址的字符串.从app.config中读取收件人列表,数据将其添加到"收件人"变量中.

如果多个收件人应以分号分隔,我怎么能收到此错误?有什么建议?一如既往,感谢您的帮助!

public bool Send()
{
    MailMessage mailMsg = 
       new MailMessage(this.Sender, this.Recipients, this.Subject, this.Message);

    SmtpClient smtpServer = new SmtpClient(SMTP);
    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
Run Code Online (Sandbox Code Playgroud)

编辑#1 - 表示使用分号.

Jon*_*eet 14

我在MailMessage构造函数文档中看不到任何建议您可以指定多个这样的收件人.我建议您创建MailMessage对象,然后分别添加每个电子邮件地址.

请注意,该MailAddressCollection.Add方法被记录为接受逗号分隔的地址...因此,它也可能在构造函数中起作用.

  • Dang interwebs ...不能相信你读过的一切.我找到了几个地方,据说你可以使用分号.我用逗号替换了分号,解决了这个问题.谢谢,乔恩! (5认同)
  • +1.它需要逗号,而不是分号.太糟糕的Outlook让我们都习惯使用分号:) (2认同)

IAm*_*rey 5

您必须使用.Add方法添加这些地址.这是我使用的一些示例代码:

string[] toAddressList = toAddress.Split(';');

//Loads the To address field
foreach (string address in toAddressList)
{
    if (address.Length > 0)
    {
        mail.To.Add(address);
    }
}
Run Code Online (Sandbox Code Playgroud)