c# - 如何在邮件正文中插入数据库值或字符串
问题描述
我想在电子邮件正文中插入数据库内容,数据阅读器的索引 0,其中包含每个电子邮件地址的 ID 号,我想使用在邮件正文中添加 ID 号发送邮件,例如:员工 ID 为 5。我需要插入每个 ID在同一行中的每个邮件正文上。我已使用此代码在正文中插入 id 但这不起作用
message.Body = "The Employee id is 5 "+reader[1].ToString();
完整代码是:
MailMessage message = new MailMessage();
message.Subject = "Employee Access ";
message.From = new MailAddress("avvv@gmail.com");
var fromAddress = "avvv@gmail.com";
const string fromPassword="password";
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
OleDbCommand cmd = null;
OleDbCommand cmd2 = null;
string queryString = "select id,email,status from tableemail";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
Password=654321;User ID = xpress; unicode=true"))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
cmd = new OleDbCommand(queryString);
cmd.Connection = connection;
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailAddress to = new MailAddress(reader[1].ToString());
message.To.Add(to);
}
message.Body = "The Employee id is 5 "+reader[1].ToString();
smtp.Send(message);
reader.Close();
}
}
我可以使用数据阅读器在正文中插入多个数据库字段吗?
解决方案
我不确定您的代码究竟如何需要此功能,但据我了解,您可以这样做。使用DataTable
DataTable dataTable = new DataTable();
MailMessage message = new MailMessage();
message.Subject = "Employee Access ";
message.From = new MailAddress("avvv@gmail.com");
var fromAddress = "avvv@gmail.com";
const string fromPassword = "password";
OleDbCommand cmd = null;
string queryString = "select id,email,status from tableemail";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe; Password = 654321; User ID = xpress; unicode = true"))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
cmd = new OleDbCommand(queryString);
cmd.Connection = connection;
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dataTable);
adapter.Dispose();
}
foreach (DataRow dataRow in dataTable.Rows)
{
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
MailAddress to = new MailAddress(dataRow[1].ToString());
if (!message.To.Contains(to))
{
message.To.Add(to);
}
message.Body = "The Employee id is 5 " + dataRow[0].ToString();
smtp.Send(message);
}
}
推荐阅读
- c# - 如何使用 bootstrap 3 修复导航栏以与 bootstrap 4 一起使用下拉菜单项和站点地图
- javascript - 比较jquery中的两个文本字段
- docker - 无法从 hhtp url 登录到 kubernetes 仪表板,因为 master 的本地主机是 vm
- python - 使用 matplotlib 时出现 numpy 多核错误
- mysql - 错误 1045 (28000): 用户 'applogger'@'10.26.72.109' 的访问被拒绝(使用密码:是)
- mongodb - 带有三个嵌套数组的 mongodb $unwind
- sumo - SUMO sim时间和实时差
- testng - 如何在运行@AfterSuite注解之前生成TestNg输出结果
- ios - Xcode 中的 UIScrollView 使用 Springs 和 Struts
- db2 - IBM Db2 支持的编程语言的文档?