Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC中将SQL Server行显示为电子邮件中的结果列表?_C#_Sql Server_Asp.net Mvc_Stored Procedures - Fatal编程技术网

C# 如何在ASP.NET MVC中将SQL Server行显示为电子邮件中的结果列表?

C# 如何在ASP.NET MVC中将SQL Server行显示为电子邮件中的结果列表?,c#,sql-server,asp.net-mvc,stored-procedures,C#,Sql Server,Asp.net Mvc,Stored Procedures,通过存储过程使用ASP.NET MVC和SQL Server,我试图向用户发送电子邮件 电子邮件应包含用户已确认的订单信息。此信息从数据库中检索 使用SQL查询,我只成功地显示了查询的第一个参数(请查看图片以查看电子邮件的内容) 控制器: private void connection() { string constring = ConfigurationManager.ConnectionStrings["DeliveryCon"].ToString();

通过存储过程使用ASP.NET MVC和SQL Server,我试图向用户发送电子邮件

电子邮件应包含用户已确认的订单信息。此信息从数据库中检索

使用SQL查询,我只成功地显示了查询的第一个参数(请查看图片以查看电子邮件的内容)

控制器:

  private void connection()
  {
        string constring = ConfigurationManager.ConnectionStrings["DeliveryCon"].ToString();
        con = new SqlConnection(constring);
  }

  public JsonResult SendMailToUser()
  {
      connection();
      con.Open();

      SqlCommand command = new SqlCommand("select Email from Bestellung where BestellungId=(Select MAX(BestellungId) From Bestellung)", con);

      SqlCommand command2 = new SqlCommand("select First_Name, Last_Name, Adresse, Email, Phone, Date, Time, Nbre_P, Items from Bestellung where BestellungId=(Select MAX(BestellungId) From Bestellung)", con);

      string em = command.ExecuteScalar().ToString();
      string sub = command2.ExecuteScalar().ToString();

      con.Close();

      bool result = false;

      result = SendEmail(em, "Delivery : Your Order", sub);
      return Json(result, JsonRequestBehavior.AllowGet);
}

public bool SendEmail(string toEmail, string subject, string emailBody)
{
        try
        {
            string senderEmail = System.Configuration.ConfigurationManager.AppSettings["SenderEmail"].ToString();
            string senderPassword = System.Configuration.ConfigurationManager.AppSettings["SenderPassword"].ToString();

            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.EnableSsl = true;
            client.Timeout = 100000;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential(senderEmail, senderPassword);
            MailMessage mailMessage = new MailMessage(senderEmail, toEmail, subject, emailBody);

            mailMessage.IsBodyHtml = true;
            mailMessage.BodyEncoding = UTF8Encoding.UTF8;
            client.Send(mailMessage);
            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
}
视图:

编辑:

 SqlDataReader reader = command2.ExecuteReader();
 List<object[]> dataList = new List<object[]>();
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                object[] tempRow = new object[reader.FieldCount];
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    tempRow[i] = reader[i];
                }
                dataList.Add(tempRow);

            }
        }
        else
        {
            Console.WriteLine("No rows found.");
        }
        reader.Close();
        con.Close();
SqlDataReader=command2.ExecuteReader();
List dataList=新列表();
if(reader.HasRows)
{
while(reader.Read())
{
object[]tempRow=新对象[reader.FieldCount];
对于(int i=0;i
您可以使用
ExecuteScalar
执行查询:

执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略

这就解释了为什么你的电子邮件只包含名字


如果需要访问不同的列,请使用并获取返回的
SqlDataReader

上的数据。您可以使用
ExecuteScalar
执行查询:

执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略

这就解释了为什么你的电子邮件只包含名字


如果您需要访问不同的列,请使用并获取返回的
SqlDataReader

@Riokmji感谢您的回答,好的,我理解,我以前也尝试过,但是如何获取数据的问题,请您详细解释您的建议,有关详细信息,请参阅。@Riokmji感谢您的回答,好的,我理解,我以前也试过,但问题是如何获取数据,请您进一步解释您的建议,以获取更多信息。使用
SqlDataReader
ExecuteReader
获取结果,使用
GetString
和列索引获取列值。@TetsuyaYamamoto这是我计划做的,但问题是我想在电子邮件中显示一个漏洞列表,而不是column
string sub=DataReader.GetString(3)
=>这是您想要的吗?如果选择的收件人不止一个,请考虑使用<代码>清单> Ad()/代码>,然后使用<代码> PROACH < /Cord-Road从列表中执行<代码> SeNemail E/CONT>。@ TtuyyayaMato to问题是:我应该写什么而不是“子”:结果= SeDemail(EM,“交货:您的订单”,子);
SendMail
的第三个参数是
string emailBody
,对吗?如果您想包含除单个收件人名称以外的其他文本,请使用收件人列表,并像邮件合并一样将其与邮件正文的某些部分连接起来。据我所知,传递的值必须具有与参数相同的类型。使用
SqlDataReader
ExecuteReader
获取结果,并使用
GetString
和列索引获取列值。@Tetsuyayayamamoto这是我计划做的,但问题是我想在电子邮件中显示一个漏洞列表,而不是column
string sub=DataReader.GetString(3)
=>这是您想要的吗?如果选择的收件人不止一个,请考虑使用<代码>清单> Ad()/代码>,然后使用<代码> PROACH < /Cord-Road从列表中执行<代码> SeNemail E/CONT>。@ TtuyyayaMato to问题是:我应该写什么而不是“子”:结果= SeDemail(EM,“交货:您的订单”,子);
SendMail
的第三个参数是
string emailBody
,对吗?如果您想包含除单个收件人名称以外的其他文本,请使用收件人列表,并像邮件合并一样将其与邮件正文的某些部分连接起来。据我所知,传递的值必须具有与参数相同的类型。
SqlCommand command2 = new SqlCommand("select First_Name
 SqlDataReader reader = command2.ExecuteReader();
 List<object[]> dataList = new List<object[]>();
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                object[] tempRow = new object[reader.FieldCount];
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    tempRow[i] = reader[i];
                }
                dataList.Add(tempRow);

            }
        }
        else
        {
            Console.WriteLine("No rows found.");
        }
        reader.Close();
        con.Close();