解析来自maildir的多部分电子邮件

我需要解析从 unix maildir 读取的多部分电子邮件文件。你能推荐一个合适的图书馆来做到这一点吗?

电子邮件通过 IMAP 被吸入并转储到 maildir。我需要解析这些电子邮件文件并提取所有部分,包括标题、base64 附件、html 部分和纯文本部分。

谢谢

编辑

我知道我可以搜索带有关键字和内容的库,但如果可能的话,我也想对质量和体验提出一些意见。

我可以处理实际的邮件目录并获取邮件文件。我关心的是解析多部分电子邮件(作为字符串输入)并提取各个部分。


BIG阳
浏览 245回答 3
3回答

噜噜哒

我在github.com/jhillyerd/enmime包中很幸运地做到了这一点。给定一个io.Reader r:// Parse message bodyenv, _ := enmime.ReadEnvelope(r)// Headers can be retrieved via Envelope.GetHeader(name).fmt.Printf("From: %v\n", env.GetHeader("From"))// Address-type headers can be parsed into a list of decoded mail.Address structs.alist, _ := env.AddressList("To")for _, addr := range alist {&nbsp; fmt.Printf("To: %s <%s>\n", addr.Name, addr.Address)}fmt.Printf("Subject: %v\n", env.GetHeader("Subject"))// The plain text body is available as mime.Text.fmt.Printf("Text Body: %v chars\n", len(env.Text))// The HTML body is stored in mime.HTML.fmt.Printf("HTML Body: %v chars\n", len(env.HTML))// mime.Inlines is a slice of inlined attacments.fmt.Printf("Inlines: %v\n", len(env.Inlines))// mime.Attachments contains the non-inline attachments.fmt.Printf("Attachments: %v\n", len(env.Attachments))

万千封印

标准库中有一个例子:https&nbsp;:&nbsp;//pkg.go.dev/mime/multipart@go1.16.6#example-NewReader

叮当猫咪

这是我的示例:缺少的部分是提取附件。如果你想通了那部分,请告诉我......几个星期以来我一直在挠头提取附件......import (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "io/ioutil"&nbsp; &nbsp; "net/mail")func extractEmail(mail *mail.Message){&nbsp; &nbsp; header := mail.Header&nbsp; &nbsp; fmt.Println(header.Get("Date"))&nbsp; &nbsp; fmt.Println(header.Get("From"))&nbsp; &nbsp; fmt.Println(header.Get("To"))&nbsp; &nbsp; fmt.Println(header.Get("cc"))&nbsp; &nbsp; fmt.Println(header.Get("bcc"))&nbsp; &nbsp; fmt.Println(header.Get("Subject"))&nbsp; &nbsp; body, err := ioutil.ReadAll(mail.Body)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; checkErr(err, "Reading Body")&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Println(body)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go