gpt4 book ai didi

c# - 如何替换 HTML 内容?

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:19 24 4
gpt4 key购买 nike

我是 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 循环下执行以检查所有员工。
但是,如果不止一个员工的生日同时出现,我会在所有电子邮件中看到相同的名字。我想 replace 函数是第一次工作,并且不会在下一次迭代中替换。

请求是否提供一些有效的方法。

最佳答案

每次从循环中的位置读取 HTML 模板文件。您需要的是带有#NAME# 等的html 文本。我认为您正在阅读它一次并且它们在循环运行。在循环访问的每一行中,使用新的 HTML 模板。

关于c# - 如何替换 HTML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50286649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com