为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中解析电子邮件标题

在 Go 中解析电子邮件标题

Go
慕码人8056858 2021-12-27 18:08:45
如何从 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"在消息的来源中。去游乐场示例无论是否缩进,正确解析标题的正确方法是什么?
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

鉴于消息格式不正确,我将通过重新格式化消息的单独代码段修复它:


func fixBrokenMime(r_ io.Reader, w io.WriteCloser) {

    r := bufio.NewScanner(bufio.NewReader(r_))

    for r.Scan() {

        line := r.Text()

        if len(line) > 0 && line[0] != ' ' && strings.IndexByte(line, ':') < 0 {

            line = " " + line

        }

        w.Write([]byte(line+"\n"))

    }

    w.Close()

}

游乐场:http : //play.golang.org/p/OZsXT7pmtN


显然,您可能需要不同的启发式方法。我假设没有缩进且不包含“:”的行必须缩进。


查看完整回答
反对 回复 2021-12-27
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

查看https://github.com/sendgrid/go-gmime(免责声明,我使用 SendGrid,但没有在 lib 中组合任何东西)


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信