电子邮件中的奇怪编码字符

weird encode character in email

我有一个通过 ruby 解析的小胡子模板,然后通过在电子邮件正文中将其标记为 html_safe 来呈现它,但是结果 HTML 中嵌入了一些奇怪的编码字符,例如

<body style=3D"min-width:640px;margin: 0 0 0 0;" bgcolor=3D"#f6f6f6" link==3D"#000000" vlink=3D"#000000" alink=3D"#000000" text=3D"#000000">
  <br />

  <table width=3D"100%" border=3D"0" align=3D"center" 
cellpadding=3D"0" c=
ellspacing=3D"0" bgcolor=3D"#f6f6f6">
    <tr>
      <td bgcolor=3D"#f6f6f6" style=3D"border-bottom: 0;">
        <table width=3D"640" style=3D"min-width:640px;" 
cellspacing=3D"0"=
 cellpadding=3D"0" border=3D"0" align=3D"center">

      <tbody>
        <tr>
          <td bgcolor=3D"#000000">
            <table width=3D"640" bgcolor=3D"#000000" cellspacing=3D"0=
" cellpadding=3D"0" border=3D"0" align=3D"center">
              <tbody>
                <tr>
                  <td width=3D"600" height=3D"10" bgcolor=3D"#000000"=
 style=3D"line-height:0px;font-size:0px;">
                    <div width=3D"1" height=3D"10" alt=3D"" style=3D"=
display:block; border:0;"></div>

为什么这些字符在将字符串标记为 html 安全后仍然存在?我错过了什么吗? Mustache 模板是常规 HTML 模板,其中包含要动态替换的 mustache 语法

这是 quoted-printable 风格,它类似于 URL 中的转义方式。您可能已经习惯了 %20,但这里 =20 是一样的。

因为 = 是转义的一部分,就像 HTML & 变成 &amp; 而 URL % 变成 %25, = 必须编码为 =3D.

HTML 恰好使用 lot= 个字符,所以你会看到到处都是 =3D 印记。