我正在尝试使用Gmail API读取电子邮件正文
我之前使用IMAP,但由于性能原因(在IMAP中读取电子邮件需要太长时间),所以我不得不转向Gmail API,后者的速度更快。
问题在于,当我尝试解码正文时,使用IMAP很简单,只需从imap_fetchstructure返回的传输编码中读取并使用适当的函数进行解码即可(如imap_qprint、imap_7bit等)。
Gmail则需要:
$message = $service->users_messages->get($user, $msg->id, ["format"=>"full"]);
$payload = $message->getPayload();
$mime = $payload->getMimeType();
$body = $payload->getBody();
$headers = $payload->getHeaders();
$content = $body->getData();
$decoded = base64_decode($content);
变量$contents是base64编码的主体内容,但如果我解码它,会出现奇怪的字符,比如��ѽ���,这种情况在IMAP中没有发生过。内容是纯文本UTF-8,没有附加部分或附件,只有纯文本。而且HTML也会出现这种情况。
以下是相关头文件:
[{"name":"MIME-Version","value":"1.0"},
{"name":"Content-Type","value":"text\/plain; charset=utf-8"},
{"name":"Content-Transfer-Encoding","value":"quoted-printable"}]
我认为问题在于正文是quoted-printable编码,但即使我对解码后的base64使用imap_qprint或quoted_printable_decode,这些奇怪的字符仍然存在。