当前位置:

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

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

GoldWave 简体中文
GoldWave 简体中文

一款功能相当强大的录音及音频编辑软件,不仅可以编辑音频,而且还可以录音,功能丰富,操作简单,使用方便,实用性强,并且占用电脑内存小,运行速度快,不卡顿电脑,使电脑系统保持良好的运行状态。支持许多格式的音频文件,包括WAV、OGG、VOC、IFF、AIFF、

立即下载
2026-08-22
图形多媒体 音频工具 GoldWave 视频渲染 制作软件 goldwave教程

Go语言使用text/template库渲染邮件模板。通过template.Must加载模板,若失败则触发panic。调用Execute方法传入io.Writer和数据结构,并检查返回的错误。该库默认对输出进行HTML转义,防止跨站脚本攻击。若需渲染HTML格式邮件,应改用html/template库,该库不会转义已有HTML标签。

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