在 Go 中解析电子邮件标题

如何从 Go 中的电子邮件中读取一些标题?


通常我会使用ReadMIMEHeader(),但遗憾的是并不是每个人都阅读了所有相关的 RFC,对于某些消息,我得到的输出如下:


格式错误的 MIME 标题行:name="7DDA4_foo_9E5D72.zip"


我将罪魁祸首缩小为


Content-Type: application/x-zip-compressed; x-unix-mode=0600;

name="7DDA4_foo_9E5D72.zip"

代替


Content-Type: application/x-zip-compressed; x-unix-mode=0600; 

  name="7DDA4_foo_9E5D72.zip"

在消息的来源中。


去游乐场示例


无论是否缩进,正确解析标题的正确方法是什么?


慕码人8056858
浏览 203回答 2
2回答

Smart猫小萌

鉴于消息格式不正确,我将通过重新格式化消息的单独代码段修复它:func fixBrokenMime(r_ io.Reader, w io.WriteCloser) {&nbsp; &nbsp; r := bufio.NewScanner(bufio.NewReader(r_))&nbsp; &nbsp; for r.Scan() {&nbsp; &nbsp; &nbsp; &nbsp; line := r.Text()&nbsp; &nbsp; &nbsp; &nbsp; if len(line) > 0 && line[0] != ' ' && strings.IndexByte(line, ':') < 0 {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line = " " + line&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; w.Write([]byte(line+"\n"))&nbsp; &nbsp; }&nbsp; &nbsp; w.Close()}游乐场:http : //play.golang.org/p/OZsXT7pmtN显然,您可能需要不同的启发式方法。我假设没有缩进且不包含“:”的行必须缩进。

白衣染霜花

查看https://github.com/sendgrid/go-gmime(免责声明,我使用 SendGrid,但没有在 lib 中组合任何东西)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go