您好,我正在使用 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: "[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自己轉換域。
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消