我使用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);
}
答案 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 , ""));
}