首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#每行向行收件人发送电子邮件

C#每行向行收件人发送电子邮件
EN

Stack Overflow用户
提问于 2019-07-11 03:28:31
回答 2查看 174关注 0票数 1

如何从datagridview行中发送每个单元格的值?Example

示例: vasia@mail.ru收件人获得: Vasia欠100欧元。liuda@mailru Liuda欠23欧元。

我的代码发送给多个用户:

代码语言:javascript
复制
 private void btnSendMail_Click(object sender, EventArgs e)
    {


        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),new DataColumn("Name", typeof(string)),
                    new DataColumn("Debt", typeof(string)),
                    new DataColumn("Email",typeof(string)) });

        dt.Rows.Add("Vasia", "130", "vasia@mail.com");
        dt.Rows.Add("Liuda", "23", "liuda@test.com");
        dt.Rows.Add("Grisa", "2560", "grisa@test.com");
        GridView1.DataSource = dt;


        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            string emailId = dt.Rows[i]["email"].ToString();
            SendEmailUsingGmail(emailId);
        }

        //write code to send mail

    }
    private void SendEmailUsingGmail(string toEmailAddress)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("xxx.xxx.xx");

            mail.From = new MailAddress("xxxxxa@xxxx.ru");
            mail.To.Add(toEmailAddress);
            mail.Subject = "tgggggg ";
            mail.Body = "Aš,  papildžiau planą šiais produktais:  PRAŠAU PATIKRINKITE PLANĄ !!!";

            SmtpServer.Port = 25;
            SmtpServer.Credentials = new System.Net.NetworkCredential("xxxxx@xxx.ru", "xxxxx");
            //SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);
            MessageBox.Show("Informavimo laiškas išsiųstas Tiekimo skyriui bei Gamybai");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

如何在正文中从datagridview行发送每个单元格值到每个电子邮件?

EN

回答 2

Stack Overflow用户

发布于 2019-07-11 03:43:43

您需要构建电子邮件正文字符串,然后循环遍历电子邮件。我稍微修改了一下你的代码来实现这一点:

代码语言:javascript
复制
        private void btnSendMail_Click(object sender, EventArgs e)
        {


            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),new DataColumn("Name", typeof(string)),
                    new DataColumn("Debt", typeof(string)),
                    new DataColumn("Email",typeof(string)) });

            dt.Rows.Add("Vasia", "130", "vasia@mail.com");
            dt.Rows.Add("Liuda", "23", "liuda@test.com");
            dt.Rows.Add("Grisa", "2560", "grisa@test.com");
            GridView1.DataSource = dt;

            string bodyText = BuildStringFromDT(dt);

            foreach (DataRow row in dt.Rows)
            {
                string emailId = row["Email"].ToString();
                SendEmailUsingGmail(emailId, bodyText);
            }

            //write code to send mail

        }
        private string BuildStringFromDT(DataTable dt)
        {
            List<string> final = new List<string>();
            foreach (DataRow row in dt.Rows)
            {
                List<string> temp = new List<string>();
                foreach (DataColumn col in dt.Columns)
                {
                    temp.Add(row[col.ColumnName].ToString());
                }
                final.Add(string.Join("\t", temp));
            }
            return string.Join("\r\n", final);
        }
        private void SendEmailUsingGmail(string toEmailAddress, string bodyText)
        {
            try
            {
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("xxx.xxx.xx");

                mail.From = new MailAddress("xxxxxa@xxxx.ru");
                mail.To.Add(toEmailAddress);
                mail.Subject = "tgggggg ";
                mail.Body = bodyText;

                SmtpServer.Port = 25;
                SmtpServer.Credentials = new System.Net.NetworkCredential("xxxxx@xxx.ru", "xxxxx");
                //SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);
                MessageBox.Show("Informavimo laiškas išsiųstas Tiekimo skyriui bei Gamybai");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
票数 0
EN

Stack Overflow用户

发布于 2019-07-11 14:38:53

不要在代码中使用纯文本Body属性,我建议您编写一个基于HTML的消息体,以便正确放置表格。

如果您使用的是System.Net.Mail.MailMessage,您可以使用:

代码语言:javascript
复制
mail.IsBodyHtml = true;

请注意,System.Web.Mail.MailMessage已过时,但如果使用它:

代码语言:javascript
复制
mail.BodyFormat
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56977427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档