C# 在查询中使用三个以上的值发送电子邮件
我有一个在ASP.net中发送电子邮件时使用的查询,但在现有代码中,我只能使用电子邮件中查询的两列: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
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);