簡體   English   中英

如何使用PHP發送批量電子郵件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM