商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Golang怎么用template实现邮件模板渲染_Golang如何用text/template生成动态文本内容【方法】

Golang怎么用template实现邮件模板渲染_Golang如何用text/template生成动态文本内容【方法】

  发布于2026-07-19 阅读(0)

扫一扫,手机访问

用Go发邮件,模板渲染是绕不开的一步。标准库text/template就能搞定,无需第三方依赖,但有几个关键点——数据结构、转义处理、错误检查——稍不注意就会踩坑。下面分几个方面来梳理。

Golang怎么用template实现邮件模板渲染_Golang如何用text/template生成动态文本内容【方法】

怎么加载并执行一个简单的邮件模板

模板文件(比如email.txt)写成纯文本或HTML都可以,text/template本身不区分格式,只管替换变量:

Hi {{.Name}},
Your order #{{.OrderID}} has been shipped.
Tracking: {{.TrackingCode}}

Go代码里加载并渲染:

  • template.Must(template.ParseFiles("email.txt"))加载,它会在解析失败时panic,适合启动时加载。
  • 调用t.Execute(&buf, data)渲染,data必须是map、struct或支持字段访问的类型。
  • 别忘了检查Execute的返回error——空字段、类型不匹配、嵌套nil都会在这里报错,不是编译期问题。

为什么邮件里HTML标签没渲染,反而显示成Hello

这个问题其实很常见。text/template默认会对所有输出做HTML转义,这是为了防止XSS攻击。但邮件正文如果是HTML格式,你并不想让<变成

  • {{.HTMLBody | safeHTML}}显式标记可信内容(前提是.HTMLBodytemplate.HTML类型)。
  • 或者把模板变量定义为template.HTML类型:比如data := struct{ Body template.HTML }{Body: template.HTML(`Hello`)}
  • 千万别用strings.ReplaceAll去“手动解码”转义后的字符串——这会破坏其他本该转义的内容,比如用户昵称里的