使用 PHP,如何将包含非 ASCII 字符的电子邮件正文解码为纯文本?

问题描述 投票:0回答:3

我正在尝试使用 PHP 提取一些编码电子邮件的一些内容,但我不能。

有了这个:

$body = imap_body($imap_o, $email_n);

我得到:

Pour = le r=E9cup=E9rer, il suffit de le t=E9l=E9charger, de le r=E9ceptionner puis de    l=92ouvrir.=Une f= ois votre traduction termin=E9e, n=92oubliez pas de sauvegarder vos paires de langues et d=92effectuer une v=E9rification g=E9n=E9rale (statuts des segments, b= alises, nombres, espaces, majuscules, etc.).Ensui= te, cliquez sur =AB=A0Terminer et livrer=A0=BB.Voici le r=E9capitulatif du projet=A0:

但是有很多

=*
。我知道
=20
是一个空格,但这里还有其他我不知道它们是什么意思。

如果我添加

quoted_printable_decode()

$body = quoted_printable_decode($body);

我得到:

Pour le r�cup�rer, il suffit de le t�l�charger, de le r�ceptionner puis de l�ouvrir. Une fois votre traduction termin�e, n�oubliez pas de sauvegarder vos paires de langues et d�effectuer une v�rification g�n�rale (statuts des segments, balises, nombres, espaces, majuscules, etc.). Ensuite, cliquez sur ��Terminer et livrer��. Voici le r�capitulatif du projet�:

我添加了

imap_qprint()
utf8_decode
,但没有任何改善...

在解码这些消息之前,我需要发送这些消息的“干净”副本,不带任何信息,如果我能够以纯格式获取这些消息,它将帮助我更快、更轻松地完成任务。

如果我需要删除正文中的一些单词我该怎么办?

php utf-8 imap decode
3个回答
14
投票

尝试

$body = utf8_encode(quoted_printable_decode($body));

编辑:从 PHP 8.2 开始,

utf8_encode()
utf8_decode()
已弃用。您应该使用
mb_convert_encoding()
来代替:

$body = mb_convert_encoding(quoted_printable_decode($body), 'UTF-8', 'ISO-8859-1');

0
投票

也许你可以设置文件编码。 在dw中,ctrl+j,标题编码设置,utf8无bom。或者记事本2,文件>编码>utf8


0
投票

但是您不能使用 utf8_encode,因为您需要删除 utf8 才能正确使用它。

© www.soinside.com 2019 - 2024. All rights reserved.