NodeJS的MIME电子邮件中主题行的UTF8编码

时间:2018-05-30 18:33:41

标签: node.js mime-mail

我无法理解这里发生了什么。我收到了一封带有以下UTF8编码主题行的电子邮件,我无法将其转换为以下编码。

未转化的: Переходнапрямыедоговорыузаконен!

转换: =?UTF-8?B?0J / QtdGA0LXRhdC + 0LQg0L3QsCDQv9GA0Y / QvNGL0LUg?= =?UTF-8?B?0LTQvtCz0L7QstC + 0YDRiyDRg9C30LDQutC + 0L3QtdC9IQ ==?=

你能帮我理解这里发生了什么吗?上面的MIME编码究竟是什么?转换为UTF8字符串与我上面看到的不一致。

1 个答案:

答案 0 :(得分:0)

那些字符没有被 ascii 覆盖并以 UTF-8 编码。此外,电子邮件主题 MIME 编码是使用 UTF-8 (RFC2047) 完成的。

最简单的解决方案是使用 npm rfc2047 library。请参阅下面的示例代码。

const rfc2047 = require('rfc2047');
let subjectLine = "=?UTF-8?Q?Votre_demande_de?=\n =?UTF-8?Q?_a_=C3=A9t=C3=A9_approuv=C3=A9e!?=";
let frenchSubjectLine = rfc2047.decode(subjectLine);
console.log("FR subject line after decoding: [" + frenchSubjectLine + "]");

输出是

FR subject line after decoding: [Votre demande de a été approuvée!]