朋友们,我将不胜感激任何对这个令人烦恼的问题的见解。我正在使用 PHP 使用非常标准的代码从 Gmail 帐户中删除电子邮件。它似乎适用于文本和 HTML 电子邮件,但绝不适用于任何带有附件或嵌入图像的电子邮件。更糟糕的是,它可以使用完全相同的代码,在同一平台上运行,在不同的 Gmail 帐户上正常工作。
下面是我输出带有嵌入图像或附件的电子邮件的已抓取 $message 时显示的示例:--对不起,Stackoverflow 拒绝让我包含图像。但它是一堆呈现为 ASCII 的二进制文件。
这是我的代码:
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'XXXX';
$password = 'XXXX';
$good = 0;
$max_emails = 25;
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
$datelimit = date ( "d M Y", strToTime ( "-1 days" ) );
$emails = imap_search($inbox,"ALL");
if($emails) {
$output = '';
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$structure = imap_fetchstructure($inbox, $email_number);
if(isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
$part = $structure->parts[1];
$message = imap_fetchbody($inbox,$email_number,2);
if($part->encoding == 3) {
$message = imap_base64($message);
} else if($part->encoding == 1) {
$message = imap_8bit($message);
} else {
$message = imap_qprint($message);
}
}
echo "Message: " . $message . "<br><br>";
...
我很感激任何关于缺少什么会导致它无法阅读电子邮件的见解。谢谢!
这是乱码输出的样子:
��PNG IHDR��(/=�sRGB���pHYs��+tEXtSoftwareMicrosoft Office�5qh\IDATx^��Uu��1��������k����cm]�s�\��cm。 VT���a:��Ϲ�o��`�}��'0s 攻�{~�s~'���F ˌ�(�v�Z[�(צN�n+W��.] :ZӦM�ެl^�r��6s���-[n��̵Y�f[^�R�<[�j�eUɲƍYŊ��d�DO�0��h�2S-L� u��ڴi3l�����ʕ��+T�Z�k