慕碼人8056858
2021-12-27 18:08:45
如何從 Go 中的電子郵件中讀取一些標題?通常我會使用ReadMIMEHeader(),但遺憾的是并不是每個人都閱讀了所有相關(guān)的 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條經(jīng)驗 獲得超7個贊
鑒于消息格式不正確,我將通過重新格式化消息的單獨代碼段修復(fù)它:
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
顯然,您可能需要不同的啟發(fā)式方法。我假設(shè)沒有縮進且不包含“:”的行必須縮進。

白衣染霜花
TA貢獻1796條經(jīng)驗 獲得超10個贊
查看https://github.com/sendgrid/go-gmime(免責(zé)聲明,我使用 SendGrid,但沒有在 lib 中組合任何東西)
- 2 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報
0/150
提交
取消