解析电子邮件主题标头

时间:2020-05-30 17:12:44

标签: go encoding mime

我正在使用net/mail通过Go阅读电子邮件:

msg, _ := mail.ReadMessage(f)
subject := msg.Header.Get("Subject")
fmt.Printf("Subject = %v", subject)

而且,当主题具有特殊字符并且邮件提供商将其从纯文本转换为编码文本时,我很难弄清楚如何对该主题进行解码。

例如,如果发送的电子邮件带有“这是一个测试”(请注意这是正确的大括号),那么该主题最终将采用UTF-8编码(我认为是十六进制值):

=?UTF-8?Q?It=E2=80=99s_a_test?=

我的问题是:

  1. 用于描述此处正在进行的编码的正确术语是什么?

  2. 在执行我需要做的事情(显示它,将它放入数据库等)之前,我将使用什么库将上面的字符串(=?UTF-8?Q?It=E2=80=99s_a_test?=)解码回It’s a test

1 个答案:

答案 0 :(得分:3)

通过搜索golang =?UTF-8?Q?并查看Go的mime包中可用的功能来找到答案

https://golang.org/pkg/mime/#WordDecoder.DecodeHeader