场景
在《telnet中使用IMAP协议查看收件箱》文章我们介绍了使用telnet来访问邮件服务器,不过当我们查询邮件的时候,我们会困惑为什么出现正文乱码问题,类似如下:
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
=E4=B8=8D
------------------=E5=8E=9F=E5=A7=8B=E9=82=AE=E4=BB=B6------------------
=E5=8F=91=E4=BB=B6=E4=BA=BA:
=E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4:2020-03-04 15:38:47
=E6=94=B6=E4=BB=B6=E4=BA=BA:
testmobile
=E4=B8=BB=E9=A2=98:=E6=B5=8B=E8=AF=95vivo=E6=89=8B=E6=9C=BA=E6=8E=A5=E6=94=
=B6=E9=82=AE=E4=BB=B6=E9=97=AE=E9=A2=98
这里就是涉及到邮件传输过程中使用的Quoted-printable编码。下面是维基百科对Quoted-printable编码的描述:
Quoted-printable或QP encoding,没有规范的中文译名,可译为可打印字符引用编码或使用可打印字符的编码。Quoted-printable是使用可打印的ASCII字符(如字母、数字与“=”)表示各种编码格式下的字符,以便能在7-bit数据通路上传输8-bit数据, 或者更一般地说在非8-bit clean媒体上正确处理数据[注 1]。这被定义为MIME content transfer encoding,用于e-mail。
QP使用“=”开头的转义字符. 一般限制行宽为76,因为有些软件限制了行宽.
简单的来说就是email用ascii字符来进行传输。了解这个之后,我们就知道怎么处理乱码了。
解决
通过邮件中正文了解,传输过程中使用的编码是:
Content-Transfer-Encoding: quoted-printable
正文的内容编码是:
Content-Type: text/plain; charset="utf-8"
通过这两个信息,我们就能够在这个网站:
https://www.webatic.com/quoted-printable-convertor
设置这两个参数进行乱码处理。具体如下:
总结
主要就是Quoted-printable编码乱码问题,感觉大佬写的webatic工具。