delphi - 从邮件服务器检索邮件时更改字符集!

标签 delphi character-encoding indy

我目前正在创建一个小的邮件客户端,并且遇到字符集问题。
我使用Indy的TIdIMAP4组件从邮件服务器检索数据。当我尝试检索邮件正文时,将重音字母(如ä,ü等)分别转换为= E4,= FC,就像使用字符集ISO-8859-1一样。


内容类型:文本/纯文本;
charset =“ ISO-8859-1”
内容传输编码:
引用可打印


我如何使服务器通过另一个字符集(例如utf-8)向我发送数据?解决该问题的最佳解决方案是什么?

提前致谢!

最佳答案

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

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

关于delphi - 从邮件服务器检索邮件时更改字符集!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5584204/

相关文章:

delphi - Indy TCP 客户端 ReadLn 函数挂起

java - Process.getInputStream() 使用哪种编码?

java - 在 PHP 中编码 base64 和在 Java 中解码 base64 的问题

delphi indy IdDNSResolver 未返回所有请求的 dns 结果

delphi - HTTPS 发布无效

delphi - 终止线程并断开 in​​dy 客户端

delphi - 清除并重新加载组和项目后,TListView 组和项目不会出现

delphi - TDictionary 重复条目(Delphi)

java - 应该使用什么代码页/字符集来将来自 MVS 系统的数据解释为 Java 环境?

delphi - Indy ping 是否需要 UAC 提升?