【问题标题】:Adding newline to base64url string向 base64url 字符串添加换行符
【发布时间】: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


【解决方案1】:

我终于修好了。我不得不将内容类型从text/html 更改为text/plain,现在换行符在电子邮件客户端上正确显示

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 2015-10-22
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多