You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言调用AWS SES实现邮件页脚动态年份展示问题咨询

你的猜测是错误的。

问题根因

所有主流邮件客户端出于安全考虑,都会默认拦截、禁用HTML邮件中的JavaScript代码。你在本地浏览器打开HTML文件时JS能正常执行,但邮件发送后,收件方的邮件客户端不会执行你插入的document.write脚本,所以年份位置显示为空,和AWS SES将HTML转为字符串传递没有关系,这是所有邮件服务商发HTML邮件的通用限制。

实现方案

你可以在服务端发送邮件前,直接把当前年份渲染到HTML模板中,不需要依赖前端JS执行,具体操作如下:

  1. 修改HTML邮件模板的页脚代码,把年份位置替换成占位符:
<span style="font-family:lato,helvetica neue,helvetica,arial,sans-serif"><em>Copyright © {{.CurrentYear}} Hive Wealth, All rights reserved.</em><br></span><br>
  1. 修改Go发送代码,使用Go标准库的模板引擎渲染HTML内容,传入当前年份:
import (
    "html/template"
    "bytes"
    "time"
    // 其他你原有导入的包保持不变
)

// 原有读取文件的逻辑替换为模板渲染
tpl, err := template.ParseFiles(fmt.Sprintf("./schemas/html/%s.html", template))
if err != nil {
    Logger.Error("parse template err", zap.Any("err", err))
    return
}

// 传入模板需要的动态参数
data := map[string]interface{}{
    "CurrentYear": time.Now().Year(),
    // 其他动态内容(比如用户名、验证码等)也可以放在这个map里
}

// 渲染得到最终的HTML字符串
var htmlBuf bytes.Buffer
if err = tpl.Execute(&htmlBuf, data); err != nil {
    Logger.Error("render template err", zap.Any("err", err))
    return
}
htmlBody := htmlBuf.String()

// 后续SES发送逻辑保持不变,直接使用上面渲染好的htmlBody即可
charSet := "UTF-8"
input := &ses.SendEmailInput{
    Destination: &ses.Destination{
        CcAddresses: []*string{},
        ToAddresses: []*string{
            aws.String(recipient),
        },
    },
    Message: &ses.Message{
        Body: &ses.Body{
            Html: &ses.Content{
                Charset: aws.String(charSet),
                Data:    aws.String(htmlBody),
            },
            Text: &ses.Content{
                Charset: aws.String(charSet),
                Data:    aws.String(textBody),
            },
        },
        Subject: &ses.Content{
            Charset: aws.String(charSet),
            Data:    aws.String(subject),
        },
    },
    Source: aws.String(sender),
}
result, err := ns.SendEmail(input)

内容的提问来源于stack exchange,提问作者Mia Mia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:24:04