gpt4 book ai didi

go - 如何编写 mbox 格式的文件?

转载 作者:IT王子 更新时间:2023-10-29 01:27:04 24 4
gpt4 key购买 nike

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

最佳答案

mbox file format (Wikipedia)其实 super 简单。

每封邮件的第一行都以“发件人”开头。电子邮件正文中任何以“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})
}

关于go - 如何编写 mbox 格式的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36079306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com