为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写 mbox 格式的文件?

如何编写 mbox 格式的文件?

Go
慕妹3242003 2021-12-27 10:44:08
我已经使用 Gmail API 获得了邮件内容和必要的标题。我想将它们写入 mbox 文件。我可以找到 Go 包和示例来读取和解析 mbox 文件。但是如何使用 Go 创建和编写 mbox 文件呢?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在MBOX文件格式(维基百科)其实超级简单。


每封邮件都有以“From”开头的第一行。电子邮件正文中以“From”开头的任何第一行都带有“”或“>”。在每个邮件正文之后,插入一个额外的空行。通常,邮件标题已经有一个“From ...”第一行,所以你需要做的是“遍历每封电子邮件,打印它,扫描正文以确保所有以“From”开头的行都有一个转义,然后用空行结束每封邮件”。


类似于以下内容(需要适应您表示电子邮件的方式):


package main


import (

    "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})

}


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号