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