在C#控制台应用程序中将SQL表结果显示到电子邮件正文上

时间:2019-07-18 04:03:54

标签: c# sql sql-server smtp

我正在尝试将SQL结果显示在电子邮件正文中。

运行以下代码时,我只会将查询的最后一行添加到电子邮件正文中。不是我想要的整个SQL表。如果运行时没有SMPTP电子邮件发送部分,则可以在控制台应用程序中显示完整表,但是一旦在变量“ body”中添加代码的电子邮件部分时将其添加到电子邮件的正文中,它就不会显示完整的结果。

string connString = @"Data Source= ServerName;Initial Catalog=Northwind;Integrated Security=True;
        Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;";

        int empID;
        string lName, fName, Title;
        string body = "";

        try
        {

            using (SqlConnection conn = new SqlConnection(connString))
            {

                string query = @"Select * from Employees";

                SqlCommand cmd = new SqlCommand(query, conn);

                conn.Open();

                SqlDataReader dr = cmd.ExecuteReader();


                Console.WriteLine(Environment.NewLine + "Retrieving data from database..." + Environment.NewLine);
                Console.WriteLine("Retrieved records:");

                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        empID = dr.GetInt32(0);
                        lName = dr.GetString(1);
                        fName = dr.GetString(2);
                        Title = dr.GetString(3);
                        body = empID + " " + lName + " " + fName + " " + Title;
                        Console.WriteLine(body);


                    }
                }
                else
                {
                    Console.WriteLine("No data found.");

                }
                //close data reader
                dr.Close();

                //close connection
                conn.Close();

                //Console.ReadLine();
            }


        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }


        ////////////////////////////////////////////////////////////
        //SMTP Connection
        ////////////////////////////////////////////////////////////

        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
        client.EnableSsl = true;
        client.Timeout = 30000;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new NetworkCredential("xxx@gmail.com", 
        "xxx@321");
        MailMessage msg = new MailMessage();
        msg.To.Add("xxx@yahoo.com");
        msg.From = new MailAddress("xxx@gmail.com");
        msg.Subject = "Test v.2";
        msg.Body = body;
        client.Send(msg);
        Console.WriteLine("Message Sent");
        Console.ReadLine();

我希望将以下内容打印到电子邮件正文上。

1 Davolio Nancy Sales Representative
2 Fuller Andrew Vice President, Sales
3 Leverling Janet Sales Representative
4 Peacock Margaret Sales Representative
5 Buchanan Steven Sales Manager
6 Suyama Michael Sales Representative
7 King Robert Sales Representative
8 Callahan Laura Inside Sales Coordinator
9 Dodsworth Anne Sales Representative

在电子邮件正文上仅显示以下内容;

9 Dodsworth Anne Sales Representative

1 个答案:

答案 0 :(得分:0)

问题是这一行:

body = empID + " " + lName + " " + fName + " " + Title;

您应该使用:

body += "\r\n" + empID + " " + lName + " " + fName + " " + Title;

但是请查看StringBuilder文档。最好应用那个。