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

标签 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)

}

最佳答案

使用 quotedprintable包裹。当 body 元素的编码是 quotedprintable 时,使用以下内容吞噬文本:

slurp, err := ioutil.ReadAll(quotedprintable.NewReader(r))

其中 r 是正文或部分。

关于mongodb - 如何将引用的可打印解码器实现为阅读电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433617/

相关文章:

go - 什么是名为 runtime.gopark 的 goroutine?

json - 如何将 JSON 文档中的字符串值解码为 int 类型的变量?

go - 从谷歌存储加载文件时,在 bigquery 中使用 .Run(ctx) 重复记录

mongodb - 如何在 mongodb 中存储 byte[] 图像以用于 Doocr 进程

javascript - 在 mongodb 中使用 javascript 区分列

mongodb - 使用 MongoDB 命令时出错

Golang 403 禁止错误

types - struct{a int;b int} 和 struct{b int;a int} 有什么区别?

mongodb - Meteor:订阅的集合不会自动更新( react 性)

javascript - 修复 AngularJS 1.2.0 [$parse :isecprv] errors