从邮件服务器检索邮件时更改charset!

时间:2011-04-07 16:14:15

标签: delphi character-encoding indy

我目前正在创建一个小邮件客户端并面临charset的问题。 我使用indy的TIdIMAP4组件从邮件服务器检索数据。当我尝试检索邮件正文时,ä,ü等强调字母分别转换为= E4,= FC,因为它使用字符集ISO-8859-1。

  

Content-Type:text / plain;   字符集= “ISO-8859-1”   内容传输编码:   引号的可打印

如何让服务器在另一个字符集中发送数据,比如utf-8?这个问题的最佳解决方案是什么?

提前致谢!

1 个答案:

答案 0 :(得分:5)

生成charset=E4等字符串的=FC不是Content-Transfer-Encoding,而是$E4$FCä是ISO-8859-1中ü$7F的二进制表示形式,但它们是8位值。电子邮件仍然主要是7位环境。除非客户端和服务器在通信期间协商8位传输,否则quoted-printable以上的字节八位字节必须以7位兼容方式进行编码,以安全地通过电子邮件网关,尤其是仍然存在的传统网关。 base64是电子邮件中常用的7位字节编码,用于文本内容。 {{1}}是另一个,但它不是人类可读的,因此它倾向于用于二进制数据而不是文本数据(尽管它可以用于文本)。

在任何情况下,您都无法使服务器以其他编码方式向您发送电子邮件数据。服务器仅按原样传送原始电子邮件数据,最初由发件人传送给它。如果您想要UTF-8中的数据,则必须在下载后自行重新编码。 Indy将为您处理解码。