如何在Go中解码邮件正文

时间:2014-07-22 09:33:37

标签: email go html-email

我正在处理电子邮件客户端,其中一部分我需要解码电子邮件正文。我使用IMAP包来获取邮件,但没有" decode"方法。我也检查了net/mail package也没有运气。只有标题似乎有一个解析器。我可以使用任何lib吗?

2 个答案:

答案 0 :(得分:9)

使用网络/邮件解析电子邮件并使用Message时,如果正文是引用可打印的编码(Content-Transfer-Encoding: quoted-printable):

示例:

r := quotedprintable.NewReader(msg.Body)
body, err := ioutil.ReadAll(r) // body now contains the decoded body

如果使用base64(Content-Transfer-Encoding: base64)编码正文,则应使用encoding/base64 package

答案 1 :(得分:1)

您可以检查使用artagnon/ibexgo-imap package项目是否提供该功能。
例如,参见其artagnon/ibex/imap.go#L288-L301测试。

var body []byte
cmd, err = imap.Wait(c.UIDFetch(set, "BODY.PEEK[]"))
if (err != nil) {
    fmt.Println(err.Error())
    return nil
}
body = imap.AsBytes(cmd.Data[0].MessageInfo().Attrs["BODY[]"])
cmd.Data = nil

bytestring, err := json.Marshal(MessageDetail{string(body)})
if (err != nil) {
    fmt.Println(err.Error())
    return nil
}
return bytestring