【问题标题】:Mail service using AWS ses in GO在 GO 中使用 AWS ses 的邮件服务
【发布时间】:2021-12-30 11:39:03
【问题描述】:

我将 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 正在转换为字符串结构,这就是为什么没有显示日期?对吗??

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

【问题讨论】:

  • 您的问题在于邮件客户端和 JavaScript。您传递的 HTML 使用 JavaScript 来计算日期,直到在浏览器或 Outlook 等客户端中打开才会执行。您可能希望在发送邮件之前使用 Go 的 html/template 注入日期值。

标签: amazon-web-services go amazon-ses


【解决方案1】:

答案是

<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()

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2014-10-30
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多