当我尝试从数据库中获取电子邮件数据以发送电子邮件时,此行message.To.Add(mailTo);
出错。
void Sendmail_Click(object sender, EventArgs e)
{
List<DAL.Customer> mailId = (from rs in General.db.Customers
where rs.IsActive == true
select rs).ToList();
StringBuilder mailstring = new StringBuilder();
foreach (var item in mailId)
{
mailstring.Append(item.Email).Append(",");
}
string mailTo = mailstring.ToString();
if (mailTo.EndsWith(","))
{
mailTo = mailTo.Remove(mailTo.LastIndexOf(","));
}
SmtpClient smtp = new SmtpClient();
mailMessage.From = fromMail;
mailMessage.To.Add(new MailAddress(mailTo));
mailMessage.IsBodyHtml = true;
lblStatus.Text = "Email sent successfully";
}
答案 0 :(得分:2)
请看一下。我不知道凭证,所以我假设你可以加起来。
void Sendmail_Click(object sender, EventArgs e)
{
List<DAL.Customer> mailId = (from rs in General.db.Customers
where rs.IsActive == true
select rs).ToList();
SmtpClient smtp = new SmtpClient();
mailMessage.From = fromMail;
mailMessage.IsBodyHtml = true;
foreach (var item in mailId)
{
mailMessage.To.Add(new MailAddress(item.Email));
}
lblStatus.Text = "Email sent successfully";
}
答案 1 :(得分:0)
正如Christian Mark建议的那样,你应该只是遍历每个邮件地址并单独添加它们(因为你已经遍历它们以构建一个字符串)。
但是,这在理论上不起作用的原因是因为您使用逗号分隔的电子邮件地址字符串创建单 MailAddress
,其中包含以下行: / p>
mailMessage.To.Add(new MailAddress(mailTo));
您可以将逗号分隔的列表传递给Add(string)
的{{1}}重载但是 - 因为您传递的是MailAddressCollection.Add
- 这不是过载你正在使用。
以下方法可行:
MailMessage
答案 2 :(得分:0)
我没有看到带有逗号分隔字符串的MailAddress
构造函数的任何重载。您需要一次遍历所有目标电子邮件地址,这需要对代码进行少量重组:
SmtpClient smtp = new SmtpClient();
mailMessage.From = fromMail;
List<DAL.Customer> mailId = (from rs in General.db.Customers
where rs.IsActive == true
select rs).ToList();
foreach (var item in mailId)
{
mailMessage.To.Add(new MailAddress(item.Email));
}