我已经获得了邮件内容和必要的头部使用Gmail。我想把这些写进mbox文件里。我可以找到Go包和示例来读取和解析mbox文件。但是如何使用Go创建和编写mbox文件呢?
发布于 2016-03-18 09:22:16
mbox file format (Wikipedia)实际上是超级简单的.
每封邮件都有第一行,开头是“开始”。电子邮件正文中以"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})
}https://stackoverflow.com/questions/36079306
复制相似问题