Как я могу копировать электронную почту из Gmail в каталог моего сервера /home/email
после подключения к почтовому ящику Gmail с использованием функций IMAP PHP ?
Я хочу получить каждое электронное письмо в виде файла в формате MIME, и я хочу загрузить полный MIME-файл с PHP, а не только с телом или заголовком письма. Из-за этого imap_fetchbody
и imap_fetchheader
не могут выполнить эту работу.
Кроме того, imap_mail_copy
и imap_mail_move
не могут выполнять эту работу, потому что они предназначены для копирования / перемещения электронной почты в почтовые ящики:
PHP загрузит полное сообщение MIME из Gmail или любого сервера IMAP, используя imap_fetchbody
когда параметр $section
установлен в значение ""
. Это приведет к тому, что imap_fetchbody
все сообщение MIME, включая заголовки и все части тела.
Краткий пример
$mime = imap_fetchbody($stream, $email_id, "");
Длинный пример
// Create IMAP Stream $mailbox = array( 'mailbox' => '{imap.gmail.com:993/imap/ssl}INBOX', 'username' => 'my_gmail_username', 'password' => 'my_gmail_password' ); $stream = imap_open($mailbox['mailbox'], $mailbox['username'], $mailbox['password']) or die('Cannot connect to mailbox: ' . imap_last_error()); if (!$stream) { echo "Cannot connect to mailbox\n"; } else { // Get last week's messages $emails = imap_search($stream, 'SINCE '. date('dM-Y',strtotime("-1 week"))); if (!count($emails)){ echo "No emails found\n"; } else { foreach($emails as $email_id) { // Use "" for section to retrieve entire MIME message $mime = imap_fetchbody($stream, $email_id, ""); file_put_contents("email_{$email_id}.eml", $mime); } } // Close our imap stream. imap_close($stream); }