友よ、この厄介な問題についての洞察をいただければ幸いです。かなり標準的なコードを使用して、PHP を使用して Gmail アカウントからメールを削除しています。テキストと HTML の電子メールでは機能するようですが、添付ファイルや埋め込み画像を含む電子メールでは機能しません。さらに悪いことに、別の Gmail アカウントで同じプラットフォームから実行されたまったく同じコードで適切に動作します。
以下は、画像または添付ファイルが埋め込まれた電子メールのスクレイピングされた $message を出力したときに表示されるものの例です。しかし、それは 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���� ��