使用PHP's IMAP functionality连接到Gmail邮箱后,如何将电子邮件从Gmail复制到我服务器的@Html.TextBoxFor(model => model.ImageUrl) // or @Html.HiddenFor()
目录?
我想将每封电子邮件检索为MIME格式的文件,我想用PHP下载完整的MIME文件,而不仅仅是电子邮件的正文或标题。因此,/home/email
和imap_fetchbody
无法胜任。
此外,似乎imap_fetchheader
和imap_mail_copy
无法完成这项工作,因为它们旨在将电子邮件复制/移动到邮箱:
答案 0 :(得分:2)
当imap_fetchbody
参数设置为$section
时,PHP将使用""
从Gmail或任何IMAP服务器下载完整的MIME邮件。这将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('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);
}