您好,我正在使用 AWS SES SDK V2 發送電子郵件。我有一個發件人姓名類似于的情況Michael ?isto。如果我將此名稱直接傳遞給 AWS 電子郵件輸入結構,則會出現以下錯誤:
operation error SESv2: SendEmail, https response error StatusCode: 400, BadRequestException: Missing '"'
這是我的代碼:
package main
import (
"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 中轉義這些字符?
uj5u.com熱心網友回復:
嘗試使用mail.Address.String格式化地址:
package main
import (
"fmt"
"net/mail"
)
func main() {
a := mail.Address{Name: "Michael ?isto", Address: "[email protected]"}
fmt.Println(a.String())
// Output:
// =?utf-8?q?Michael_=C4=8Disto?= <[email protected]>
}
如果您的域包含非 ASCII 字符:
請注意,Amazon SES 不支持 SMTPUTF8 擴展。如果地址的域部分(@ 符號之后的部分)包含非 ASCII 字符,則必須使用 Punycode 對其進行編碼(請參閱types.BulkEmailEntry)。mail.Address.String不會為你做這個。但是您可以使用idna.ToASCII自己轉換域。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535751.html
