[英]How To make Bulk email Script using php
我正在為1k用戶制作批量電子郵件腳本,我想發送電子郵件,但是我的腳本給我錯誤,超時。
如何處理頁面超時。 任何有關后端的建議都可以運行此腳本。
如果用戶單擊“發送”按鈕,則在用戶關閉此頁面但腳本正常工作的情況下運行此腳本后端。
$Email_ID="";
$queryUser=mysql_query("SELECT `email` From `users`",$conn);
while($User=mysql_fetch_array($queryUser))
{
$to = $User["email"];
$Email_ID=$User["email"];
$from = 'donotreply@abc.com';
$from_name = 'Test bulk email';
$senderMail="donotreply@abc.com";
$senderName="abc";
$message=$_POST["message"];
$subject = $_POST["subject"];
$html_content = $_POST["message"];
$from = $senderName." <".$senderMail.">";
$headers = "From: $from";
$headers = "CC: jignesh.tplabs@gmail.com";
$headers = "BCC: jignesh.tplabs@gmail.com";
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
$upload_file="";
if(isset($_SESSION["uniqid"]))
{
$query=mysql_query("SELECT * From `bulk_email_attchment` where `unique_id`='".$_SESSION["uniqid"]."' ",$conn);
while($row=mysql_fetch_array($query))
{
$files = "Attchment/".$row["name"];
$message .= "--{$mime_boundary}\n";
$fp = @fopen($files,"rb");
$data = @fread($fp,filesize($files));
@fclose($fp);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: application/octet-stream; name=\"".basename($files)."\"\n" .
"Content-Description: ".basename($files)."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($files)."\"; size=".filesize($files).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
}
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $senderMail;
//send email
$mail = mail($to, $subject, $message, $headers, $returnpath);
}
}
您可以設置cron腳本。 因此,您的電子郵件腳本由cron處理並在后台運行。
如果要在用戶中止的情況下繼續執行腳本,則可以使用ignore_user_abort()
。
// Ignore if a user aborts
ignore_user_abort(true);
set_time_limit(0);
// Send your emails here
有關更多信息,請檢查PHP ignore_user_abort()
(文檔)[ http://php.net/manual/fr/function.ignore-user-abort.php]
將所有提交的表單數據插入數據庫。 然后,您可以進行cron作業,以檢查是否有新的電子郵件作業要提交和提交。 這樣,用戶無需等待,您也不會遇到關閉瀏覽器的問題。
正確的方法:使用命名管道創建一個php隊列,該隊列連接到另一個php腳本,該腳本將在每次調用時發送電子郵件。 如果您只是盯着php,則需要花費一些時間才能正確編碼所有代碼。
適度但不理想的方法:設置Cron Job來調用您的腳本(每次調用都會發送20封左右的電子郵件。如果您使用Godaddy之類的服務,只需使用Google:“ CronJob godaddy設置”
hacky方式:將腳本放在頁面中,該頁面使用查詢字符串重定向到自身,以更新發送了多少電子郵件:
例如,發送20封電子郵件后,請使用以下代碼:
$count = 20;
header('Location http://www.example.com/index.php?count='.$count);
我不建議使用The Hacky Way,因為作為程序員,我們應該嘗試遵循最佳實踐,但是我個人不能阻止您:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.