失败从PHP中提取数据

时间:2017-01-05 01:37:02

标签: php email imap imap-open

朋友们,我很欣赏任何有关这个棘手问题的见解。我正在使用PHP从Gmail帐户中删除电子邮件,使用非常标准的代码。它似乎适用于文本和HTML电子邮件,但绝不使用带有附件或嵌入式图像的任何电子邮件。更糟糕的是,它可以使用完全相同的代码在同一平台上运行,使用不同的Gmail帐户。

以下是我输出带有嵌入式图片或附件的电子邮件的已删除$消息时显示内容的示例: - 抱歉,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>";
...

我很欣赏任何可能导致它无法阅读电子邮件的缺失。谢谢!

这是乱码输出的样子:

  

PNGIHDR (/ =RsRGB pHYSs +tEXtSoftwareMicrosoftOffice 5qh\ IDATx ^ Uu 1 k cm] s \ cm VT a: Σ o ` } '0s߽ {〜 s~' Fˌ ( v Z[ ( N +n +W ) ]:ZӦMެL ^ r6s- [NYF [^为r [jeUɲƍYŊdDO0h2S -Luڴi3lʕ+ TZK

0 个答案:

没有答案