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");

?>

Ответы на вопрос(3)

Ваш ответ на вопрос