我创建了一个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);
}
我期望主体和主体的输出是希伯来语,但只有主体有效。
例如,如果主题是"נושא",主体是"גוף",那么结果是:主体是"נושא“(这很棒),主体是”נושא“
(主题的编码为=?UTF-8?B?16DXldep15A=?=)
谢谢!
附言:如果我的英语不是很好,我很抱歉。
发布于 2019-05-24 03:25:28
这两个函数略有不同。
UTF
如果你只读过一个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
头建立的内容类型。
https://stackoverflow.com/questions/56281082
复制相似问题