首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写mbox格式的文件?

如何编写mbox格式的文件?
EN

Stack Overflow用户
提问于 2016-03-18 08:15:11
回答 1查看 350关注 0票数 2

我已经获得了邮件内容和必要的头部使用Gmail。我想把这些写进mbox文件里。我可以找到Go包和示例来读取和解析mbox文件。但是如何使用Go创建和编写mbox文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-18 09:22:16

mbox file format (Wikipedia)实际上是超级简单的.

每封邮件都有第一行,开头是“开始”。电子邮件正文中以"From“或">”开头的第一行都加了前面。在每个邮件正文之后,插入一个额外的空行。通常情况下,邮件头已经有一个"From .“第一行,所以您需要做的是“遍历每封电子邮件,打印它,扫描正文以确保从”有一个转义“开始的所有行,然后用空行完成每封邮件。

如下所示(需要适应您表示电子邮件的方式):

代码语言:javascript
复制
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})
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36079306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档