【发布时间】:2019-12-05 06:12:16
【问题描述】:
我有一个程序正在发送 base64url 编码的字符串,但我读到了 base64 不支持“\”字符的地方。我的目的是在 Go 中使用 Gmail API 发送电子邮件。正文部分由以下部分组成:
"Name: \n\nThis is the body of the email\n\nSincerely,\nSenderName"
当我send emails through the Gmail API 时,我需要传递一个 base64url 字符串。 我有以下功能来处理:
func encodeWeb64String(b []byte) string {
s := base64.URLEncoding.EncodeToString(b)
var i = len(s) - 1
for s[i] == '=' {
i--
}
return s[0 : i+1]
}
我已经在这个post之后的msg中添加了标题信息,并将内容类型设置为text/html; charset=\"utf-8\"。然后我使用这个创建 Gmail 邮件:
gmsg := gmail.Message{
Raw: encodeWeb64String([]byte(msg)),
}
当电子邮件通过时,它看起来像这样:
姓名:这是电子邮件的正文 真诚的,发件人姓名
但我希望每个 '\n' 都放入实际的换行符。感谢您的帮助,我是 Go 的 Gmail API 的新手。
【问题讨论】:
-
base64 编码器处理所有字节值,包括换行符。在 Gmail 中使用“显示原始”来查看收到的原始邮件字节数。换行符可能按您的预期发送,但邮件呈现为 HTML。
-
与您的问题无关,但如果您不想要填充,我很确定您想使用
base64.RawURLEncoding(您的函数使用填充版本,然后似乎手动去除填充) . -
@CeriseLimón Gmail 中的“显示原件”选项在哪里,我该怎么做?
-
@DaveC 能否提供一个代码示例来说明如何使用
base64.RawURLEncoding -
“显示原文”在消息视图的更多菜单(三个垂直点)中。显示设置消息头的代码。我怀疑应用程序没有设置或错误设置内容类型。
标签: go base64 gmail-api base64url