php - imap - перемещение писем на другой аккаунт
Я работаю над сценарием, который загружает электронные письма и сохраняет их в БД. Обычно я получаю тысячи писем на эту учетную запись, после того как загруженные письма удаляются.
Будучи параноиком, я хочу иметь по крайней мере один месяц резервной копии своих электронных писем, но я не могу загромождать свой основной почтовый ящик, оставляя их там.
Поэтому мне нужно переместить почту (через php-код) из одного почтового ящика в другой. Я придумал это решение, которое использует imap_append (). Это решение, однако, воссоздает электронную почту и не перемещает ее.
Есть ли у вас какие-либо предложения или альтернативные способы сделать это?
Помните: это должно быть сделано в php, потому что мне нужно интегрировать его в мой скрипт readmail.
Я уже видел эту веткугде было предложено решение fetchmail
Ниже следует код, который я написал для этой задачи
Mailbox." OK");
myLog($mbox_data->Nmsgs." messages present");
return $mbox_data->Nmsgs;
}
}
$fromMbox = mboxConn($fromMboxConnStr, $fromMboxMailAddress, $fromMboxMailPass);
$toMbox = mboxConn($toMboxConnStr, $toMboxMailAddress, $toMboxMailPass);
$fromMboxCount = mboxCheck($fromMbox);
$toMboxCount = mboxCheck($toMbox);
/**
* Loop on mails
*/
$fetchStartUID = imap_uid($fromMbox,$fetchStartSeq);
if ($fromMboxCount < $fetchEndSeq)
{
$fetchEndSeq = $fromMboxCount;
}
$fetchEndUID = imap_uid($fromMbox,$fetchEndSeq);
/**
* Loop on mails
*/
myLog("Do stuff and backup from UID [$fetchStartUID] to UID [$fetchEndUID]");
for ($i=$fetchStartSeq;$iUnseen . $h->Recent . $h->Deleted . $h->Answered . $h->Draft . $h->Flagged."]");
myLog($pfx."From: [". htmlspecialchars($h->fromaddress) . "] To: [".htmlspecialchars($h->toaddress)."]");
myLog($pfx."Subject: [$h->subject]");
/**
* Here you do whaterver you need with your email
*/
/**
* Backup email
*/
if (!($ret = imap_append($toMbox,$toMboxServerPath.$toMboxMailboxPath,$message)))
{
myLog("Error: ".imap_last_error());
die;
}
else
{
myLog("everything ok, mail [$fetchStartUID:$fetchEndUID] downloaded and moved in $newMailboxNameMOVE");
}
}
/**
* End
*/
imap_close($fromMbox);
imap_close($toMbox);
myLog("Connection closed");
?>