ASP.NET Web Forms邮件问题:JSON数据无法填充至HTML邮件表格
ASP.NET Web Forms 邮件模板数据填充问题修复
在ASP.NET Web Forms中发送邮件时,出现以下问题:
- 无法将后端JSON数据填充到邮件内容中
- HTML邮件内的表格无数据显示,始终为空
原代码的核心错误
- 循环生成表格行时,错误操作
emailBody对象,而用于存储行数据的tableRows始终为空 - 尝试用文件路径字符串
templatePath替换模板占位符,而非实际读取到的HTML模板内容emailTemplate - 最后错误地将邮件正文重新赋值为原始模板
emailTemplate,覆盖了之前的占位符替换结果
修正后的C#代码
StringBuilder tableRows = new StringBuilder(); string templatePath = HttpContext.Current.Server.MapPath("~/Mail_Template/AppEmail.html"); string emailTemplate = File.ReadAllText(templatePath); // 遍历JSON数据生成表格行 foreach (var item in jsonData) { tableRows.AppendLine("<tr>"); tableRows.AppendLine($"<td>{item.App_name}</td>"); tableRows.AppendLine($"<td>{item.From_date}</td>"); tableRows.AppendLine($"<td>{item.To_date}</td>"); tableRows.AppendLine("</tr>"); } // 用生成的表格行替换模板中的占位符 string emailBodytoSend = emailTemplate.Replace("{APPLICATION_ROWS}", tableRows.ToString()); // 设置邮件正文并发送 mailMessage.Body = emailBodytoSend; mailMessage.IsBodyHtml = true; smtpClient.Send(mailMessage);
修正说明
- 正确生成表格行:将循环中添加行数据的操作从
emailBody改为tableRows,确保所有行数据都存入目标对象 - 使用模板内容替换占位符:用读取到的
emailTemplate(而非文件路径)执行占位符替换操作 - 避免覆盖正文:仅将替换后的最终内容赋值给
mailMessage.Body,不再重新赋值原始模板
对应的HTML模板(无需修改)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <table width="100%" cellspacing="0" cellpadding="0"> <tr> <td align="center"> <h1>Your Email Title</h1> <p>Hello,</p> <p>This is a sample email template for Application Details.</p> <!-- You can include dynamic data here --> <!--<p>Application Name: {APPLICATION_NAME}</p> <p>From Date: {FROM_DATE}</p> <p>To Date: {TO_DATE}</p>--> <table border="1" cellpadding="10"> <tr> <th>Application Name</th> <th>From Date</th> <th>To Date</th> </tr> {APPLICATION_ROWS} </table> <p>You can track the same.</p> <p>Best regards,</p> <p>Your Name</p> </td> </tr> </table> </body> </html>
内容的提问来源于stack exchange,提问作者Ashley Ferns
相关产品推荐
相关产品推荐

