以下代码(完整代码的一部分)创建了一个阅读器,然后阅读电子邮件的正文并将其存储到“最终正文”中。然后将这个最终的身体传递到mongoldb进行存档。但是,读取的消息正文是可打印的,我希望传入mongodb的主体被解码为utf8。如何在这段代码中实现引用的可打印包,究竟在哪里?
// Creates a reader.
mediaType, params, err := mime.ParseMediaType(contentType)
if err != nil {
log.Println("Unable to read the type of the content.")
log.Println(err)
return
}
reader := multipart.NewReader(msg.Body, params["boundary"])
// Reads the body
finalBody := ""
if strings.HasPrefix(mediaType, "multipart/") {
for {
p, err := reader.NextPart()
if err == io.EOF {
break
}
if err != nil {
log.Println(err)
return
}
slurp, err := ioutil.ReadAll(p)
if err != nil {
log.Println(err)
return
}
finalBody += string(slurp)
}
} else {
txt, err := ioutil.ReadAll(msg.Body)
if err != nil {
log.Fatal(err)
}
finalBody += string(txt)
}
并且此段将最终正文传递给mongodb
importMsg := &importer.Mail{
Body: finalBody }
// Saves in MongoDB
dal := importer.NewMailDAO(c, mongo)
dal.Save(importMsg)
}
答案 0 :(得分:0)
使用quotedprintable包。当一个body元素的编码被引用时,用文字:
填充文本slurp, err := ioutil.ReadAll(quotedprintable.NewReader(r))
其中r
是正文或部分。