如何编写 mbox 格式的文件?

我已经使用 Gmail API 获得了邮件内容和必要的标题。我想将它们写入 mbox 文件。我可以找到 Go 包和示例来读取和解析 mbox 文件。但是如何使用 Go 创建和编写 mbox 文件呢?


慕妹3242003
浏览 257回答 1
1回答

慕的地6264312

在MBOX文件格式(维基百科)其实超级简单。每封邮件都有以“From”开头的第一行。电子邮件正文中以“From”开头的任何第一行都带有“”或“>”。在每个邮件正文之后,插入一个额外的空行。通常,邮件标题已经有一个“From ...”第一行,所以你需要做的是“遍历每封电子邮件,打印它,扫描正文以确保所有以“From”开头的行都有一个转义,然后用空行结束每封邮件”。类似于以下内容(需要适应您表示电子邮件的方式):package mainimport (    "fmt"    "io"    "os"    "strings")type Mail struct {    Headers []string    Body    []string}func (m *Mail) Save(w io.Writer) {    for _, h := range m.Headers {        fmt.Fprintln(w, h)    }    fmt.Println("")    for _, b := range m.Body {        if strings.HasPrefix(b, "From ") {            fmt.Fprintln(w, ">", b)        } else {            fmt.Fprintln(w, b)        }    }}func WriteMbox(w io.Writer, mails []Mail) {    for _, m := range mails {        m.Save(w)        fmt.Fprintln(w, "")    }}func main() {    m := Mail{Headers: []string{"From test", "Subject: Test"},               Body: []string{"Mail body, totes, like"}}    WriteMbox(os.Stdout, []Mail{m, m, m})}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go