1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
在MBOX文件格式(維基百科)其實(shí)超級(jí)簡單。
每封郵件都有以“From”開頭的第一行。電子郵件正文中以“From”開頭的任何第一行都帶有“”或“>”。在每個(gè)郵件正文之后,插入一個(gè)額外的空行。通常,郵件標(biāo)題已經(jīng)有一個(gè)“From ...”第一行,所以你需要做的是“遍歷每封電子郵件,打印它,掃描正文以確保所有以“From”開頭的行都有一個(gè)轉(zhuǎn)義,然后用空行結(jié)束每封郵件”。
類似于以下內(nèi)容(需要適應(yīng)您表示電子郵件的方式):
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})
}
- 1 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報(bào)