在GO中使用AWS ses的邮件服务



我正在使用AWS SES进行邮件服务。跟随包裹"github.com/aws/aws-sdk-go/service/ses";

使用这个,我发现HTML数据以字符串的形式传递

在我的一个场景中,我想动态地显示年份。。意味着现在我想在邮件页脚部分中显示2021年明年2022年

<span style="font-family:lato,helvetica neue,helvetica,arial,sans-serif"><em>Copyright © 2021 Hive Wealth, All rights reserved.</em><br></span><br> 

所以我把它重写为

<span style="font-family:lato,helvetica neue,helvetica,arial,sans-serif"><em>Copyright © <script>document.write(new Date().getFullYear())</script> Hive Wealth, All rights reserved.</em><br></span><br>

当我在浏览器中打开我的html时,它会显示正确的年份。。但在查看邮件后,它显示空值

htmlBody, err := ioutil.ReadFile(fmt.Sprintf("%s", "./schemas/html/"+template+".html"))
if err != nil {
Logger.Error("err", zap.Any("err", err))
}
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(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)

这是我的邮件呼叫区。但是今年并没有如预期的那样到来。。它只是显示为空。。

我怎样才能做到这一点?

在我看来,HTML正在转换为字符串结构,这就是为什么日期没有显示的原因?对吗??

如何在邮件模板页脚部分获取当前年份?

答案是

<em>Copyright © {{ .Year }} Hive Wealth, All rights reserved.</em>

templateData := struct {
Year int
}{
Year: time.Now().Year(),
}
// The HTML body for the email.
newtemp, err := temp.ParseFiles(fmt.Sprintf("%s", "./schemas/html/"+template+".html"))
if err != nil {
Logger.Error("template failed", zap.Any("err", err))
}
buf := new(bytes.Buffer)
if err = newtemp.Execute(buf, templateData); err != nil {
Logger.Error("template failed", zap.Any("err", err))
}
htmlBody := buf.String()

最新更新