解决邮件乱码问题
主要是记录下乱码的解决过程。
首先要想办法弄到原始数据,也就是原始邮件,eml格式的数据,没搞之前一直觉得这是个很神秘的事情,实际上也就是普通字符串,只是用了一些固定的格式。
试过了php各种解码函数都不行,包括nkf,我一度以为这个事情无解了,加之最近遇到的问题都是这样很难缠的问题,感觉很难受。。
但是转发到outlook的邮件又确实是被正确解码了,说明这个问题是有解的,原始数据并没有问题,是这边的解码方式的问题。
直到我搜到一个日本网站,提供这种邮件的解码 我发现居然可以。这下我确信这个题是有解的了。但是不知道他是怎么做的。
后来又找到一个提供解码的网站,且,提供了源码, 看了他的代码,发现也没啥特别的,也是用iconv_mime_decode来解,但是为什么我怎么尝试就是不行呢?百思不得其解。
实在没办法,我把他源码搬到本地,也就是说本地也可以像他一样提供表单然后提交这样的。发现居然这样也是可以的!!!
这两种方式到底有啥不同呢?我把问题锁定在了表单上。查看了浏览器控制台提交给后台的数据,然后对比我的原始数据,确实是有不同的,然后一个个开始比,发现<
变成了 <
。然后发现里面的<
还挺多的,然后我就找到了php解码这种东西的方式,叫做htmlspecialchars_decode。
所以先用htmlspecialchars_decode给解码一遍后再用iconv_mime_decode就解决了。舒服了~~😌