gmailにログインして受信トレイ内のすべてのメールを削除する関数をphpにまとめようとしています。それでおしまい。私はそれで少し立ち往生しており、他のコードを作り直して動作させるなど、いくつかの方法を試しましたが、成功は限られていました。
最新のものは次のとおりです。
function deleteEmails($emailAddress, $reportUrl, $reportType)
{
$result = "error";
// DOWNLOAD DATA
// the max time allows for the email to download
set_time_limit(30000);
// connect to gmail with your credentials
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = $emailAddress; # e.g somebody@gmail.com
$password = $superSecretPasswordShhhhhhhh;
// try to connect
$inbox = imap_open($hostname,$username,$password) or die('Cannot download information: ' . imap_last_error());
$emails = imap_search($inbox,'ALL');
// if any emails found, iterate through each email
if($emails)
{
$count = 1;
// for every email...
foreach($emails as $email_number)
{
// TRIED BOTH, BUT THE EMAILS WOULDN'T DELETE
//imap_delete($inbox,$email_number);
imap_mail_move($inbox, $email_number,'[Gmail]/Bin');
$result = "success";
}
}
// close the connection
imap_close($inbox,CL_EXPUNGE);
return $result;
}
私が見逃しているもの、またはそれを行うためのよりクリーンな方法はありますか?
理由の質問に答えるには:
アカウントから電子メールをダウンロードし、添付されたレポートを保存する関数をループするアプリケーションがあります。これは正常に機能しますが、問題は、レポートが毎分到着することです。そのため、関数を実行すると、何百ものレポートが処理される可能性があります。したがって、プロセスを開始する前にバックログをきれいにすることは、受信トレイをきれいに保つための最良の方法です
以下はそのままのコードです。メールを削除するという点で機能しますが、メールがすべてなくなったとしても、サーバーエラーが発生するまで実行されます。私が見逃している可能性のあるアイデアはありますか?
// DELETE ALL EMAILS IN ACCOUNT
function deleteEmails($emailAddress) { $result = "エラー"; // データのダウンロード // 電子メールのダウンロードに許容される最大時間 set_time_limit(30000);
// connect to gmail with your credentials
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = $emailAddress; # e.g somebody@gmail.com
$password = $superSecretPasswordShhhhh;
// try to connect
$inbox = imap_open($hostname,$username,$password) or die('Cannot download information: ' . imap_last_error());
$emails = imap_search($inbox,'ALL');
// if any emails found, iterate through each email
if($emails)
{
$count = 1;
// put the newest emails on top
rsort($emails);
// for every email...
foreach($emails as $email_number)
{
// TESTING BOTH METHODS
imap_delete($inbox,$email_number);
//imap_mail_move($inbox, $email_number,'[Gmail]/Bin');
$result = "success";
}
}
// close the connection
imap_expunge($inbox);
imap_close($inbox,CL_EXPUNGE);
return $result;
}