如何在C#中发送前替换邮件模板中的一些内容?
how to replace some content in mail template before send in C#?
我已经创建了一个邮件模板,但是一些值将是来自 cs 文件的动态值,我尝试在我的邮件模板中使用##username,
并使用 mailbody.Replace("##UserName", "jack");替换邮件模板中的用户名值,但它仍然在我的邮件中显示##UserName,
请问如何在C#发送前替换邮件模板中的一些内容?
我的邮件模板:mailtemplate.html:
<div>
<table>
<tr>
<td> ##UserName<span style='font-size:24px'><span></td>
</tr>
</table>
</div>
</div>
我的 sendmail.aspx.cs :
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
string mailbody = string.Empty;
using (StreamReader reader = new StreamReader(HttpContext.Current.Server.MapPath("mailtemplate.html")))
{
mailbody = reader.ReadToEnd();
}
mailbody.Replace("##UserName", "jack");
mm.Body = mailbody;
您只是在使用“原始”邮件正文。
你需要这样做
mailbody = mailbody.Replace("##UserName", "jack");
然后 mailbody
将有被替换的文本....如果不是你只是替换,但丢弃结果...
在 C# 中,字符串是不可变的,因此您会得到一个新的字符串,并进行所需的替换
所以这个
mailbody = mailbody.Replace("##UserName", "jack");
mm.Body = mailbody;
或这个
var replacedBody = mailbody.Replace("##UserName", "jack");
mm.Body = replacedBody;
或这个
mm.Body = mailbody.Replace("##UserName", "jack");;
应该可以。您只需要使用 Replace
的返回值而不是原始字符串(您在做什么)
看看here at the docs。把returns替换成string
,就是你要找的结果字符串
我已经创建了一个邮件模板,但是一些值将是来自 cs 文件的动态值,我尝试在我的邮件模板中使用##username, 并使用 mailbody.Replace("##UserName", "jack");替换邮件模板中的用户名值,但它仍然在我的邮件中显示##UserName, 请问如何在C#发送前替换邮件模板中的一些内容?
我的邮件模板:mailtemplate.html:
<div>
<table>
<tr>
<td> ##UserName<span style='font-size:24px'><span></td>
</tr>
</table>
</div>
</div>
我的 sendmail.aspx.cs :
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
string mailbody = string.Empty;
using (StreamReader reader = new StreamReader(HttpContext.Current.Server.MapPath("mailtemplate.html")))
{
mailbody = reader.ReadToEnd();
}
mailbody.Replace("##UserName", "jack");
mm.Body = mailbody;
您只是在使用“原始”邮件正文。
你需要这样做
mailbody = mailbody.Replace("##UserName", "jack");
然后 mailbody
将有被替换的文本....如果不是你只是替换,但丢弃结果...
在 C# 中,字符串是不可变的,因此您会得到一个新的字符串,并进行所需的替换
所以这个
mailbody = mailbody.Replace("##UserName", "jack");
mm.Body = mailbody;
或这个
var replacedBody = mailbody.Replace("##UserName", "jack");
mm.Body = replacedBody;
或这个
mm.Body = mailbody.Replace("##UserName", "jack");;
应该可以。您只需要使用 Replace
的返回值而不是原始字符串(您在做什么)
看看here at the docs。把returns替换成string
,就是你要找的结果字符串