如何使用 PHP IMAP 将电子邮件从 Gmail 复制到我的服务器?
How to copy email from Gmail to my server using PHP IMAP?
如何在使用 PHP's IMAP functionality 连接到 Gmail 邮箱后将电子邮件从 Gmail 复制到服务器的 /home/email
目录?
我想将每封电子邮件检索为 MIME 格式的文件,并且我想使用 PHP 下载完整的 MIME 文件,而不仅仅是电子邮件的 body 或 header .因此,imap_fetchbody
和 imap_fetchheader
无法完成这项工作。
此外,imap_mail_copy
和 imap_mail_move
似乎无法完成这项工作,因为它们旨在将电子邮件复制/移动到邮箱:
- imap_mail_copy:将指定的邮件复制到邮箱。
- imap_mail_move: 将指定的邮件移动到邮箱。
当 $section
参数设置为 ""
时,PHP 将使用 imap_fetchbody
从 Gmail 或任何 IMAP 服务器下载完整的 MIME 邮件。这将 imap_fetchbody
检索整个 MIME 消息,包括 headers 和所有 body 部分。
简短示例
$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('d-M-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);
}
如何在使用 PHP's IMAP functionality 连接到 Gmail 邮箱后将电子邮件从 Gmail 复制到服务器的 /home/email
目录?
我想将每封电子邮件检索为 MIME 格式的文件,并且我想使用 PHP 下载完整的 MIME 文件,而不仅仅是电子邮件的 body 或 header .因此,imap_fetchbody
和 imap_fetchheader
无法完成这项工作。
此外,imap_mail_copy
和 imap_mail_move
似乎无法完成这项工作,因为它们旨在将电子邮件复制/移动到邮箱:
- imap_mail_copy:将指定的邮件复制到邮箱。
- imap_mail_move: 将指定的邮件移动到邮箱。
$section
参数设置为 ""
时,PHP 将使用 imap_fetchbody
从 Gmail 或任何 IMAP 服务器下载完整的 MIME 邮件。这将 imap_fetchbody
检索整个 MIME 消息,包括 headers 和所有 body 部分。
简短示例
$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('d-M-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);
}