我创建了一个php代码,以使用imap从gmail获取所有新电子邮件-也在希伯来语中。当我尝试使用“ imap_utf8”功能时,它仅适用于主题,不适用于身体。 (我还注意到对象的编码与身体的编码不同)
我在网上搜索了很多东西,但没有找到任何解决方案。 (我也是php的新手)
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,$email_number, 1);
echo imap_utf8($overview[0]->subject);
echo imap_utf8($message);
}
我希望希伯来语能为受检者和身体提供输出,但只有受检者才能工作。
例如-如果主题为“נושא”,而正文为“גוף”,则结果为: 主题为“שו"א”(这很棒), 15LXldejDQo =用于身体
(主题的编码为=?UTF-8?B?16DXldep15A =?=)
谢谢!
P.S:对不起,我的nglish不太好。
答案 0 :(得分:1)
最后,感谢ficuscr,它正在运行!
答案是使用base64_decode
函数包装正文,如下所示:
$message = imap_fetchbody($inbox,$email_number, 1);
echo base64_decode($message);
非常感谢您,ficuscr!
答案 1 :(得分:1)
这两个功能略有不同。
如果您只读过一个RFC,那么Multipurpose Internet Mail Extensions就是一个不错的考虑。
<?php
$body = '15LXldejDQo=';
var_dump(base64_decode($body)); //output: גוף
var_dump(imap_utf8($body)); //output: 15LXldejDQo=
$subject = '=?UTF-8?B?16DXldep15A=?=';
var_dump(base64_decode($subject)); //output: Q1|^�^W^�^@
var_dump(imap_utf8($subject)); //output: נושא
基本上,标头编码使用另一种技术。您可以在主题行=?charset?encoding?encoded-text?=
中看到它。 B
用于base64,Q
可以用引号打印。消息是简单的base64编码的,内容类型由Content-Type
头建立。