Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 在查询中使用三个以上的值发送电子邮件_C#_Sql_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 在查询中使用三个以上的值发送电子邮件

C# 在查询中使用三个以上的值发送电子邮件,c#,sql,asp.net,asp.net-mvc,C#,Sql,Asp.net,Asp.net Mvc,我有一个在ASP.net中发送电子邮件时使用的查询,但在现有代码中,我只能使用电子邮件中查询的两列: 电子邮件(电子邮件) 名字(电子邮件) 现在我想改进代码,以便使用 电子邮件 名字 节目 这是我以前检索两列的代码 SqlDataReader reader; string sendMessage = "SELECT aspnet_Membership.Email, User_Profile.FirstName, User_Profile.Program FROM aspn

我有一个在ASP.net中发送电子邮件时使用的查询,但在现有代码中,我只能使用电子邮件中查询的两列:

  • 电子邮件(电子邮件)
  • 名字(电子邮件)

  • 现在我想改进代码,以便使用

  • 电子邮件
  • 名字
  • 节目
  • 这是我以前检索两列的代码

      SqlDataReader reader;
    
      string sendMessage = "SELECT aspnet_Membership.Email,      User_Profile.FirstName, User_Profile.Program FROM aspnet_Membership join User_Profile on User_Profile.UserId = aspnet_Membership.UserId";
    
    
            using (SqlConnection myConnection = new SqlConnection(connectionString))
            {
                myConnection.Open();
                SqlCommand myCommand = new SqlCommand(sendMessage, myConnection);
                myCommand.Parameters.AddWithValue("@UserId", currentUserId);
                myCommand.Parameters.AddWithValue("@ProjectId", querystring);
    
                ArrayList emailArray = new ArrayList();
                reader = myCommand.ExecuteReader();
    
                Dictionary<string, string> emails = new Dictionary<string, string>();
    
                while (reader.Read())
                {
                    emails[Convert.ToString(reader["email"])] = Convert.ToString(reader["FirstName"]);
                }
    
                foreach (string email in emails.Keys)
                {
                  //email codes
                }
    
            }
    
    SqlDataReader;
    string sendMessage=“从用户配置文件上的aspnet\U成员资格加入用户配置文件中选择aspnet\U Membership.Email、User\U Profile.FirstName、User\U Profile.Program”;
    正在使用(SqlConnection myConnection=newsqlconnection(connectionString))
    {
    myConnection.Open();
    SqlCommand myCommand=新的SqlCommand(sendMessage,myConnection);
    myCommand.Parameters.AddWithValue(“@UserId”,currentUserId);
    myCommand.Parameters.AddWithValue(“@ProjectId”,querystring);
    ArrayList emailArray=新的ArrayList();
    reader=myCommand.ExecuteReader();
    字典电子邮件=新字典();
    while(reader.Read())
    {
    电子邮件[Convert.ToString(读卡器[“email”])]=Convert.ToString(读卡器[“FirstName”]);
    }
    foreach(emails.Keys中的字符串电子邮件)
    {
    //电子邮件代码
    }
    }
    
    这就是我尝试过的

        public class EmailCode
        {
            public string Email { get; set; }
            public string FirstName { get; set; }
            public string Program { get; set; }
        }
    
    
        protected void emailtest_Click(object sender, EventArgs e)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    
            SqlDataReader reader;
            string sendMessage = "SELECT aspnet_Membership.Email,      User_Profile.FirstName, User_Profile.Program FROM aspnet_Membership join User_Profile on User_Profile.UserId = aspnet_Membership.UserId";
            using (SqlConnection myConnection = new SqlConnection(connectionString))
            {
                myConnection.Open();
                SqlCommand myCommand = new SqlCommand(sendMessage, myConnection);
    
    
                ArrayList emailArray = new ArrayList();
                reader = myCommand.ExecuteReader();
    
    
    
                var emails = new List<EmailCode>();
    
                while (reader.Read())
                {
                    emails.Add(new EmailCode
                    {
                        Email = Convert.ToString(reader["email"]),
                        FirstName = Convert.ToString(reader["FirstName"]),
                        Program = Convert.ToString(reader["Program"])
                    });
                }
    
                foreach (EmailCode email in emails)
                {
    
                    const string username = "";
                    const string password = "
                    SmtpClient smtpclient = new SmtpClient();
                    MailMessage mail = new MailMessage();
                    MailAddress fromaddress = new 
                    smtpclient.Host = "";
                    smtpclient.Port = 25;
                    mail.From = fromaddress;
                    mail.To.Add(Email);
                    mail.Subject = ("");
                    //mail.Attachments.Add(new mail);
                    mail.IsBodyHtml = true;
                    mail.Body = Hello" + HttpUtility.HtmlEncode(FirstName) + " you are studying " + HttpUtility.HtmlEncode(Program) + ";
    
                    smtpclient.EnableSsl = false;
                    smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtpclient.Credentials = new System.Net.NetworkCredential(username, password);
                    smtpclient.Send(mail);
                }
    
    公共类EmailCode
    {
    公共字符串电子邮件{get;set;}
    公共字符串名{get;set;}
    公共字符串程序{get;set;}
    }
    受保护的无效电子邮件测试\u单击(对象发件人,事件参数e)
    {
    string connectionString=ConfigurationManager.connectionString[“connectionString”]。connectionString;
    SqlDataReader;
    string sendMessage=“从用户配置文件上的aspnet\U成员资格加入用户配置文件中选择aspnet\U Membership.Email、User\U Profile.FirstName、User\U Profile.Program”;
    正在使用(SqlConnection myConnection=newsqlconnection(connectionString))
    {
    myConnection.Open();
    SqlCommand myCommand=新的SqlCommand(sendMessage,myConnection);
    ArrayList emailArray=新的ArrayList();
    reader=myCommand.ExecuteReader();
    var=新列表();
    while(reader.Read())
    {
    电子邮件。添加(新的电子邮件代码)
    {
    Email=Convert.ToString(读卡器[“Email”]),
    FirstName=Convert.ToString(读卡器[“FirstName”]),
    Program=Convert.ToString(读卡器[“程序”])
    });
    }
    foreach(电子邮件中的电子邮件编码)
    {
    常量字符串用户名=”;
    常量字符串密码=”
    SmtpClient SmtpClient=新的SmtpClient();
    MailMessage mail=新的MailMessage();
    MailAddress fromaddress=新建
    smtpclient.Host=“”;
    smtpclient.Port=25;
    mail.From=fromaddress;
    mail.To.Add(电子邮件);
    mail.Subject=(“”);
    //mail.Attachments.Add(新邮件);
    mail.IsBodyHtml=true;
    mail.Body=Hello“+HttpUtility.HtmlEncode(名字)+”您正在学习“+HttpUtility.HtmlEncode(程序)+”;
    smtpclient.EnableSsl=false;
    smtpclient.DeliveryMethod=SmtpDeliveryMethod.Network;
    smtpclient.Credentials=新系统.Net.NetworkCredential(用户名、密码);
    发送(邮件);
    }
    
    您有两个选择。您可以同时停止使用字典,也可以在字典的值为类的情况下使用字典,例如。下面是一个使用新类型的示例。在更新SQL查询以返回
    程序
    数据后,您可以执行类似操作

    //Create a new class for our Poco
    public class EmailCode
    {
        public string Email {get; set;}
        public string FirstName {get; set;}
        public string Program {get;set;}
    }
    

    创建一个类并将电子邮件、名称和程序分配给它。谢谢,但当我执行类似于| mail.to.Add(Email);|@Jack的操作时,我会不断收到“名称‘Email’在当前上下文中不存在”的消息。请编辑您的问题,以包含您尝试的代码。
    //Create a new class for our Poco
    public class EmailCode
    {
        public string Email {get; set;}
        public string FirstName {get; set;}
        public string Program {get;set;}
    }
    
    var emails = new List<EmailCode>();
    
    while (reader.Read())
    {
        emails.Add(new EmailCode {Email = Convert.ToString(reader["email"]),
            FirstName = Convert.ToString(reader["FirstName"]),
            Program =  Convert.ToString(reader["Program"])
            });
    }
    
    foreach (EmailCode email in emails)
    {
      //email codes
    }
    
    mail.Body = "Hello" + HttpUtility.HtmlEncode(email.FirstName) + " you are studying " + HttpUtility.HtmlEncode(email.Program);
    
    smtpclient.EnableSsl = false;
    smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpclient.Credentials = new System.Net.NetworkCredential(username, password);
    smtpclient.Send(mail);