这是Indy的问题,你用Delphi自带的Demo也是这样,它没有考虑好多语言字符集的问题。
当邮件主题中有指定字符集的信息且不是以“ISO”打头的话就会出现这个问题。
(而中文主题有很多是以“=?gb2312”打头的,有些则不是,就不会出现乱码)
最简单的解决办法是把IdHeaderCoder.pas的140行从
if Pos('=?ISO', UpperCase(Header)) > 0 then
改成
if Pos('=?', UpperCase(Header)) > 0 then //去掉对“ISO”的判断
这样可以一劳永逸,并且我试过没什么副作用(至少我没发现:)