如何修复 "imap_utf8" 不适用于 php imap 中的电子邮件正文
How to fix "imap_utf8" doesn't work for the email's body in php imap
我创建了一个 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:如果我的英文不是很好,请见谅
这两个函数略有不同。
- base64_decode — 解码使用 MIME base64
编码的数据
- imap_utf8 — 将 MIME-encoded 文本转换为 UTF-8
如果您只读过一个 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: נושא
基本上 header 编码使用不同的技术。您会在主题行中看到这一点... =?charset?encoding?encoded-text?=
。 B
用于 base64,Q
用于 quote-printable。消息只是简单的base64编码,内容类型由Content-Type
header.
建立
我创建了一个 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:如果我的英文不是很好,请见谅
这两个函数略有不同。
- base64_decode — 解码使用 MIME base64 编码的数据
- imap_utf8 — 将 MIME-encoded 文本转换为 UTF-8
如果您只读过一个 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: נושא
基本上 header 编码使用不同的技术。您会在主题行中看到这一点... =?charset?encoding?encoded-text?=
。 B
用于 base64,Q
用于 quote-printable。消息只是简单的base64编码,内容类型由Content-Type
header.