为了账号安全,请及时绑定邮箱和手机立即绑定

通过 AWS ses 发送电子邮件时转义特殊字符

通过 AWS ses 发送电子邮件时转义特殊字符

Go
临摹微笑 2023-03-15 14:43:31
您好,我正在使用 AWS SES SDK V2 发送电子邮件。我有一个发件人姓名类似于的情况Michael čisto。如果我将此名称直接传递给 AWS 电子邮件输入结构,则会出现以下错误:operation error SESv2: SendEmail, https response error StatusCode: 400, BadRequestException: Missing '"'这是我的代码:package mainimport (    "context"    "github.com/aws/aws-sdk-go-v2/aws"    awsconfig "github.com/aws/aws-sdk-go-v2/config"    "github.com/aws/aws-sdk-go-v2/service/sesv2"    "github.com/aws/aws-sdk-go-v2/service/sesv2/types")func main() {    name := "Michael čisto"    body := "test email body"    subject := "test email"    CharSet := "UTF-8"    /* Assemble the email */    input := &sesv2.SendEmailInput{        Destination: &types.Destination{            CcAddresses: []string{},            ToAddresses: []string{receiverEmail},        },        Content: &types.EmailContent{            Simple: &types.Message{                Body: &types.Body{                    Html: &types.Content{                        Charset: aws.String(CharSet),                        Data:    aws.String(body),                    },                },                Subject: &types.Content{                    Charset: aws.String(CharSet),                    Data:    aws.String(subject),                },            },        },        ReplyToAddresses: []string{"\"" + name + "\" <" + senderEmail + ">"},        FromEmailAddress: aws.String("\"" + name + "\" <" + senderEmail + ">"),    }    cfg, err := awsconfig.LoadDefaultConfig(context.TODO(),        awsconfig.WithRegion("us-east-1"),    )    client := sesv2.NewFromConfig(cfg)    emailResp, err = client.SendEmail(context.TODO(), input)}谁能帮我弄清楚如何在 GO 中转义这些字符?
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

尝试使用mail.Address.String格式化地址:

package main


import (

    "fmt"

    "net/mail"

)


func main() {

    a := mail.Address{Name: "Michael čisto", Address: "sender@example.com"}

    fmt.Println(a.String())

    // Output:

    // =?utf-8?q?Michael_=C4=8Disto?= <sender@example.com>

}

如果您的域包含非 ASCII 字符

请注意,Amazon SES 不支持 SMTPUTF8 扩展。如果地址的域部分(@ 符号之后的部分)包含非 ASCII 字符,则必须使用 Punycode 对其进行编码(请参阅types.BulkEmailEntry)。mail.Address.String不会为你做这个。但是您可以使用idna.ToASCII自己转换域。



查看完整回答
反对 回复 2023-03-15
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号