首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通过AWS se发送电子邮件时转义特殊字符

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

Stack Overflow用户
提问于 2022-11-14 04:07:07
回答 1查看 59关注 0票数 1

你好,我正在使用V2发送电子邮件。我有一个例子,发送者的名字类似于Michael čisto。如果我直接将这个名称传递给AWS电子邮件输入结构,那么它会给我以下错误:

operation error SESv2: SendEmail, https response error StatusCode: 400, BadRequestException: Missing '"'

这是我的代码:

代码语言:javascript
复制
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)
}

有谁能帮我找出如何在“围棋”中避开这些角色吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-14 07:28:56

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

代码语言:javascript
复制
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不支持SMTPUTF8扩展。如果地址的域部分(@符号后面的部分)包含非ASCII字符,则必须使用Punycode对它们进行编码(请参阅types.BulkEmailEntry)。mail.Address.String并不是为你这样做的。但是您可以使用idna.ToASCII自己转换域。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74426826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档