[英]How to send bulk emails using PHP?
我正在用PHP開發我的第一個項目並且是新的。 昨天,我需要創建一個功能,以將新帖子的電子郵件通知發送給所有站點成員。 我創建了一個功能,但我不知道它有多好。
創建帖子后,我選擇了sql中的所有網站成員-
包括“ db.php”;
$query = "SELECT * FROM user";
$runQuery = mysqli_query($db, $query);
這給了我所有的站點成員。 然后,我遍歷數組並像這樣抓取每個成員的電子郵件ID-
while($users = mysqli_fetch_assoc($runQuery) {
$email = $users['email'];
}
這樣,我就有了每個成員的電子郵件ID。 現在,在循環中,我可以使用mail()函數向每個站點成員發送電子郵件。
為了更好地編寫代碼,我在另一個文檔中編寫了發送電子郵件代碼,並使用“ include()”函數將其鏈接。 像這樣 -
while($users = mysqli_fetch_assoc($runQuery) {
$email = $users['email'];
include "send_email.php";
}
發送電子郵件文件的位置具有$ header,$ email_subject,$ email_body和來自此循環的$ email。 因此,每次循環運行時,都會有新的電子郵件ID,並將郵件發送到該電子郵件ID。
這段代碼在我的localhost上有效,甚至在生產環境(hostgator托管)中也是如此,直到站點成員很少。 但是,當我在活動站點(擁有70多個成員)上對其進行測試時,該頁面停留了至少10秒鍾,並返回錯誤“頁面不起作用”。
那么這里到底發生了什么? 為什么無法將電子郵件發送給更多用戶?
因為您的每一步都包含“ send_mail.php”文件,所以這意味着大量的內存和CPU使用率。 那么,為什么不這樣做呢?
send_mail.php文件:
function sendMail($email){
//your mail stuff..
}
你的while循環:
include "send_mail.php";
while($users = mysqli_fetch_assoc($runQuery)){
$email = $users['email'];
sendMail($email);
}
另外,PHP腳本還具有執行代碼的時間限制。 如果要繞過它,則必須將此代碼編寫到文件的頂部(具有while循環):
set_time_limit(0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.