首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gmail-api :邮件内容格式被扭曲(Code Lang : Go)

gmail-api :邮件内容格式被扭曲(Code Lang : Go)
EN

Stack Overflow用户
提问于 2017-01-20 20:06:31
回答 1查看 221关注 0票数 2

我在Go中使用"google.golang.org/api/gmail/v1“发送带有HTML内容的多封邮件。我使用一个for循环来发送多个内容不同但都是"html“类型的邮件。

就API而言,它工作得很好,所有的邮件都得到了传递。但只有第一封邮件是以正确的格式发送的,即HTML格式(即,邮件的收件人收到的是HTML格式的邮件),而其他用户收到的是包含所有内容的文本邮件(因此所有HTML标记在邮件正文中都可见)。/

我需要处理什么限制或条件才能让它成功吗?

请指出我正在做的错误。

代码片段是:

代码语言:javascript
运行
复制
func main() {
// Get the data from the DB
recipientsList := dbRetrieval()
fmt.Println("About to call the method")

// Invoke the Loop for all the recipients
for indx := range recipientsList {
    time.Sleep(time.Second * 10)
    fmt.Println("The 3 second wait :", indx)
    tokenValueToBeUsed := requestRefreshToken(recipientsList[indx])
    if len(tokenValueToBeUsed) == 0 {
        err_uid := updateIsDeleted(recipientsList[indx].UserId)
        if err_uid {
            fmt.Println("Zero refresh token , so updated the DELETE")
        } else {
            fmt.Println("Zero refresh token  But couldnt update the DELETE ")
        }
    } else {
        secret, err := ioutil.ReadFile("client_secret.json")
        if err != nil {
            log.Printf("Error: %v", err)
        } else {
            conf, err := google.ConfigFromJSON(secret, gmail.GmailSendScope)
            if err != nil {
                log.Printf("Error: %v", err)
            } else {
                var tok oauth2.Token
                tok.AccessToken = tokenValueToBeUsed
                token := &tok
                client := conf.Client(oauth2.NoContext, token)
                gmailService, err := gmail.New(client)
                if err != nil {
                    log.Printf("Error: %v", err)
                } else {
                    var message gmail.Message

                    // For HTML
                    header := make(map[string]string)
                    header["From"] = recipientsList[indx].From_Mail
                    header["To"] = recipientsList[indx].To_Mail
                    header["Subject"] = recipientsList[indx].Title + "\r\n\r\n" + recipientsList[indx].Body + "\r\n\r\n" + recipientsList[indx].Signature + "\r\n\r\n" + recipientsList[indx].Pixel
                    header["MIME-Version"] = "1.0"
                    header["Content-Type"] = "text/html; charset=\"utf-8\""
                    header["Content-Transfer-Encoding"] = "base64"
                    var msg string
                    for k, v := range header {
                        msg += fmt.Sprintf("%s: %s\r\n", k, v)
                    }
                    message.Raw = base64.URLEncoding.EncodeToString([]byte(msg))

                    // Send the message
                    _, err_gms := gmailService.Users.Messages.Send("me", &message).Do()
                    if err_gms != nil {
                        log.Printf("Error: %v", err_gms)
                    } else {

                        err_upd := updateStatus(recipientsList[indx].UUID)
                        if err_upd {
                            fmt.Println("Message sent!")
                            //fmt.Println("The GMAIL response Object Details", gmailResponse)
                        } else {
                            fmt.Println("Message sent! But user not updated")
                        }

                    }
                }

            }

        }

    }

}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 03:26:29

我不能保证这一点,但似乎你可能有问题的电子邮件字段顺序,因为与map的顺序是随机的。尝试将基于map的东西替换为以下内容:

代码语言:javascript
运行
复制
header := [][]string{
    {"To", recipientsList[indx].To_Mail},
    {"From", recipientsList[indx].From_Mail},
    {"MIME-Version", "1.0"},
    {"Content-Type", "text/html; charset=utf-8"},
    {"Content-Transfer-Encoding", "base64"},
    {"Subject", recipientsList[indx].Title + "\r\n\r\n" + recipientsList[indx].Body + "\r\n\r\n" + recipientsList[indx].Signature + "\r\n\r\n" + recipientsList[indx].Pixel},
}
var msg string
for _, v := range header {
    msg += fmt.Sprintf("%s: %s\r\n", v[0], v[1])
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41763308

复制
相关文章

相似问题

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