从SMTP服务器发送时,Content-Transfer-Encoding
中的quoted-printable
为何会弄乱链接?
示例:
设置mail from
,rcpt to
并进入data
模式后,发送此邮件(已删除电子邮件):
From: Me <me@me.com>
To: You <you@you.com>
Subject: Email Test
Mime-Version: 1.0;
Content-Type: text/html; charset="UTF-8";
Content-Transfer-Encoding: quoted-printable;
<html>
<body>
<a href="https://www.google.com/">Google</a>
</body>
</html>
然后,电子邮件源就以某种方式被弄乱了,并且标签被更改为<a href=3D"ttps://www.google.com/"">Google</a>
(缺少h
的{{1}})。
如果我将编码更改为https
,则一切正常。
答案 0 :(得分:0)
对于碰巧碰到这篇文章的任何人-这个问题很简单,但从一开始就不是一个显而易见的问题。
使用quoted-printable
时,必须确保传递正确编码的数据。我不是。我正在通过普通的HTML,认为还可以。
因此,在我的示例中,<a>
标签必须被编码为<a href=3D"https://www.google.com/">Google</a>
,然后它才能起作用。
我正尝试使用Go来实现此功能,因此下面是一个将实现此功能的函数...
// Returns a properly quoted-printable string
func toQuotedPrintable(s *string) error {
var b bytes.Buffer
w := quotedprintable.NewWriter(&b)
_, err := w.Write([]byte(*s))
if err != nil {
log.Println("Error while decoding to quoted-printable", err)
return err
}
err = w.Close()
if err != nil {
log.Println("Error while decoding to quoted-printable", err)
return err
}
*s = b.String()
return nil
}