邮件标题中找到了无效字符:';'在c#中

时间:2015-07-01 07:28:35

标签: c# email

我使用System.Net.Mail在我的应用程序中发送电子邮件但我得到了一个例外,我无法弄清楚问题是什么/在哪里以及如何解决它。

问题是我有一些无效的字符:

An invalid character was found in the mail header: ';'.

我试过谷歌没有成功。

带有电子邮件地址的字符串是:

john@mydomain.org; beth@mydomain.org; alfred@mydomain.org; barbie@mydomain.org; 

这是我的电子邮件发送代码:

    SmtpClient smtpClient = new SmtpClient("smtp.........");
    System.Net.Mail.MailMessage mailMessagePlainText = new System.Net.Mail.MailMessage();

    mailMessagePlainText.IsBodyHtml = true;
    mailMessagePlainText.From = new MailAddress("vincent@mydomain.org", "admin");

    mailMessagePlainText.Subject = "test";
    mailMessagePlainText.Body = "test";

    mailMessagePlainText.To.Add(new MailAddress(List1.ToString(), ""));
    mailMessagePlainText.Bcc.Add(new MailAddress("vincent@mydomain.org", ""));

    try
    {
        smtpClient.Send(mailMessagePlainText);
    }
    catch (Exception ex)
    {
        throw (ex);
    }

3 个答案:

答案 0 :(得分:4)

foreach (var address in List1.split(';')) {
    mailMessagePlainText.To.Add(new MailAddress(address.Trim(), ""));
}

因为根据上面的字符串,上面这个循环中的每个地址都会产生以下内容:

"john@mydomain.org"
" beth@mydomain.org"
" alfred@mydomain.org"
" barbie@mydomain.org"

因此,通过在地址中添加.Trim()可以使代码正常工作。

答案 1 :(得分:2)

MailAddressCollection(与您的mailMessagePlainText.To一样)Add method接受包含邮件地址列表的字符串,以逗号分隔

因此,要使用它,您需要将;更改为,,并可能删除多余的空格。

答案 2 :(得分:0)

看起来您将地址添加为单个MailAddress,您需要一次添加1个地址。我不知道有哪些其他重载可用,但以下内容可能会有效。

我将字符串拆分为;并分别添加每个地址。​​

替换

mailMessagePlainText.To.Add(new MailAddress(List1.ToString(), ""));

foreach (var address in List1.split(';')) {
    mailMessagePlainText.To.Add(new MailAddress(address , ""));
}