2

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";



    }
4

3 回答 3

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";

    }
于 2013-09-09T07:36:58.463 回答
0

正如 Christian Mark 建议的那样,您可能应该只遍历每个邮件地址并单独添加它们(因为您已经在遍历它们以构建字符串)。

但是,这在理论上不起作用的原因是因为您正在创建一个带有 MailAddress逗号分隔的电子邮件地址字符串的单个电子邮件地址,其中包含以下行:

mailMessage.To.Add(new MailAddress(mailTo));

可以将逗号分隔的列表传递给但的Add(string)重载MailAddressCollection.Add- 因为您正在传递 a MailMessage- 这不是您正在使用的重载。

以下将起作用:

mailMessage.To.Add(mailTo);
于 2013-09-09T07:37:20.870 回答
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));
}
于 2013-09-09T07:38:32.050 回答