c# - 如何替换 HTML 内容?
问题描述
我是 C# 编程的新手。作为一项研究,我正在制作一个应用程序,该应用程序将向生日当天的员工发送一封电子邮件。
我能够完成发送电子邮件的任务。但是我的电子邮件启用了 html,我想在其中显示生日员工的姓名。
在 HTML 页面上,我创建了一个表格,其中将有一行名称。
<tr>
<td> Name</td>
<td>#Name#</td>
</tr>
我从数据库中提取的记录并将它们存储在数据适配器中,然后存储在字符串中。我正在使用String Replace()
函数来更新名称。
DataTable dt = null;
string Body = System.IO.File.ReadAllText("path of HTML file");
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("query"))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Day", DateTime.Today.Day);
cmd.Parameters.AddWithValue("@Month", DateTime.Today.Month);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
}
}
}
foreach (DataRow row in dt.Rows)
{
string name = row["Name"].ToString();
string dob = row["DOB"].ToString();
DateTime dob1 = DateTime.Parse(row["DOB"].ToString());
if ((dob1.Day == DateTime.Today.Day) && (dob1.Month == DateTime.Today.Month))
{
Body = Body.Replace("#Name#", name);
Body = Body.Replace("#dob#", dob);
using (MailMessage mm = new MailMessage("From Email address", "To email address"))
{
mm.Subject = "Birthday Greetings";
mm.Body = Body;
mm.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "Mail Server";
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential();
smtp.UseDefaultCredentials = true;
smtp.Credentials = credentials;
smtp.Port = 587;
smtp.Send(mm);
}
}
}
替换函数正在 foreach 循环下执行以检查所有员工。
但是,如果多个员工的生日同时出现,我会在所有电子邮件中使用相同的名字。我猜替换功能第一次起作用,并且在下一次迭代中不会替换。
请求是否提供一些有效的方法。
解决方案
每次从循环中的位置读取 HTML 模板文件。您需要的是带有#NAME# 等的html 文本。我认为您正在阅读它一次并且它们正在循环运行。在您循环访问的每一行中,使用新的 HTML 模板。
推荐阅读
- python - 使用 :raises: 来自可能由当前方法中的方法引起的异常的文档字符串
- postgresql - 如何在 Postgresql 中使用 case when 创建数据透视表?
- .htaccess - htaccess 拒绝通过正则表达式访问 URI
- dataweave - 基于 DateTime Dataweave 过滤负载
- javascript - JavaScript 中 Promise 的 Python 等价物是什么?
- algorithm - 为什么桶排序被认为是非比较排序?
- reactjs - 禁用提升时,如何将 React 库从一个 Yarn 工作区导入另一个工作区?
- python - 提取游戏数据:不正确的值
- matplotlib - 图形格式 - X 轴表示法和注释 - Matplotlib
- c++ - 在标头和源中分离类会导致构建错误