如何实现引用的可打印解码器来阅读电子邮件的正文?

时间:2018-01-25 00:00:21

标签: mongodb go

以下代码(完整代码的一部分)创建了一个阅读器,然后阅读电子邮件的正文并将其存储到“最终正文”中。然后将这个最终的身体传递到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)

}

1 个答案:

答案 0 :(得分:0)

使用quotedprintable包。当一个body元素的编码被引用时,用文字:

填充文本
slurp, err := ioutil.ReadAll(quotedprintable.NewReader(r))

其中r是正文或部分。