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

コンマ区切りのリストをオーバーロード ofに渡すことができますが、a を渡しているため、これは使用しているオーバーロードではありません。Add(string)MailAddressCollection.AddMailMessage

次のように動作します。

mailMessage.To.Add(mailTo);
于 2013-09-09T07:37:20.870 に答える
0

MailAddressコンマ区切りの文字列を受け取るコンストラクターのオーバーロードは見当たりません。すべての送信先電子メール アドレスを一度に 1 つずつループする必要があるため、コードを少し再編成する必要があります。

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 に答える