微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C# 中发送之前替换邮件模板中的某些内容?

如何解决如何在 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。替换返回一个string,这是您要查找的结果字符串

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。