您好,我正在使用 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自己转换域。
- 1 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消