phpmailer在这么多发送后停止?

发布于 2025-02-07 09:52:07 字数 5450 浏览 3 评论 0原文

我试图通过phpmailer发送1,000多封电子邮件,但是在发送了100封电子邮件后,它停止发送它们,您知道为什么会这样吗?这是我的代码。

我正在使用phpmailer和Google SMTP,并将AG Suite电子邮件作为发件人。

它确实完美地执行了每个功能,但是由于某种原因,它只是随机停止在循环中。非常失落。

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

header('Content-Type: application/json');
require '/var/www/fakewebsite.com/vendor/autoload.php';

$newsletterid = $_POST['newsletterid'];
$allcontacts = Contacts::ReadAllNewsletter();
$allnewseletters = Newsletter::ReadAllNewsletter();

$mail = new PHPMailer(true);

//Server settings
//Enable verbose debug output
$mail->isSMTP();
$mail->SMTPAuth   = true;                                           //Enable SMTP authentication
$mail->SMTPKeepAlive = true;                                       //Keep SMTP Connection Alive During Loop
$mail->Host       = 'smtp.gmail.com';                                 //Set the SMTP server to send through
$mail->Username   = '[email protected]';                //SMTP usernames
$mail->Password   = 'fakepassword';                     //SMTP password
$mail->SMTPSecure = 'tls';                                  //Enable implicit TLS encryption
$mail->Port       = 587;
$mail->SMTPDebug  = 1;
$mail->addReplyTo('[email protected]', 'Fake Name');


foreach ($allcontacts as $eachcontact) {

    foreach ($allnewseletters as $eachnewsletter) {

        if ($eachnewsletter["id"] == $newsletterid) {

            if ($eachnewsletter["contactlist"] == 1) {

                if ($eachcontact["contacttype"] == 'Client') {

                    if ($eachcontact["subscribed"] == 1) {

                        $sendnewsletter = new Newsletter();
                        $sendnewsletter->contactid = $eachcontact["id"];
                        $sendnewsletter->newsletterid = $eachnewsletter["id"];
                        $newslettercounter = new Newsletter();
                        $newslettercounter->id = $eachnewsletter["id"];

                        //Recipients
                        $mail->setFrom('[email protected]', $eachnewsletter["fromname"]);
                        $mail->addAddress($eachcontact["email"]);
                        $message1 = file_get_contents('/var/www/fakewebsite.com/public_html/admin/emailtemplates/newsletterunfilled.php');
                        $message1 = str_replace('{NEWSLETTERCONTENT}', $eachnewsletter["content"], $message1);
                        $message1 = str_replace('{First Name}', $eachcontact["name"], $message1);
                        $message1 = str_replace('..', "https://fakewebsite.com/admin", $message1);
                        $message1 = str_replace("api/unsubscribe.php?contactid={contactid}&amp;newsletterid={newsletterid}", "https://fakewebsite.com/admin/newsletter/api/unsubscribe.php?contactid={contactid}&newsletterid={newsletterid}", $message1);
                        $message1 = str_replace('<span style="color: #ffffff;"><a style="color: #ffffff;" href="https://www.divinestatus.com" target="_blank" rel="noopener"><strong>SCHEDULE TRANPORT</strong></a></span>', '<span style="color: #ffffff;"><a style="color: #ffffff;" href="https://fakewebsite.com/admin/newsletter/api/linkclicked.php?url=https://www.fakewebsite.com&contactid={contactid}&newsletterid={newsletterid}" target="_blank" rel="noopener"><strong>SCHEDULE TRANPORT</strong></a></span>', $message1);
                        $message1 = str_replace('{First Name}', $eachcontact["name"], $message1);
                        $message1 = str_replace('{contactid}', $eachcontact["id"], $message1);
                        $message1 = str_replace('{newsletterid}', $eachnewsletter["id"], $message1);

                        $mail->isHTML(true);                                  //Set email format to HTML
                        $mail->Subject = $eachnewsletter["subject"];
                        $mail->Body = $message1;
                        $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

                        $sendnewsletter->delivered = 1;
                        $sendnewsletter->SendNewsletter();
                        $newslettercounter->NewsletterDelivered();

                        $result = array('status' => "success", 'message' => "Message sent.");
                        echo json_encode($result);


                        if (!$mail->send()) {
                            $result = array('status' => "error", 'message' => "Message not sent!.");
                            echo json_encode($result);
                            echo "Mail Not Sent";
                            $sendnewsletter->delivered = 0;
                            $sendnewsletter->SendNewsletter();
                        }

                        $mail->ClearAllRecipients();

                        sleep(1);
                    }
                }
            }
        }
    }
}

I am attempting to send over 1,000 emails through phpmailer, however after roughly the 100 email sent, it stops sending them, do you know why this could be? Here is my code.

I am using PHPmailer and Google SMTP, with a g suite email as the sender.

It does execute every function perfectly, but for some reason it just randomly stops in the loop. Very lost.

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

header('Content-Type: application/json');
require '/var/www/fakewebsite.com/vendor/autoload.php';

$newsletterid = $_POST['newsletterid'];
$allcontacts = Contacts::ReadAllNewsletter();
$allnewseletters = Newsletter::ReadAllNewsletter();

$mail = new PHPMailer(true);

//Server settings
//Enable verbose debug output
$mail->isSMTP();
$mail->SMTPAuth   = true;                                           //Enable SMTP authentication
$mail->SMTPKeepAlive = true;                                       //Keep SMTP Connection Alive During Loop
$mail->Host       = 'smtp.gmail.com';                                 //Set the SMTP server to send through
$mail->Username   = '[email protected]';                //SMTP usernames
$mail->Password   = 'fakepassword';                     //SMTP password
$mail->SMTPSecure = 'tls';                                  //Enable implicit TLS encryption
$mail->Port       = 587;
$mail->SMTPDebug  = 1;
$mail->addReplyTo('[email protected]', 'Fake Name');


foreach ($allcontacts as $eachcontact) {

    foreach ($allnewseletters as $eachnewsletter) {

        if ($eachnewsletter["id"] == $newsletterid) {

            if ($eachnewsletter["contactlist"] == 1) {

                if ($eachcontact["contacttype"] == 'Client') {

                    if ($eachcontact["subscribed"] == 1) {

                        $sendnewsletter = new Newsletter();
                        $sendnewsletter->contactid = $eachcontact["id"];
                        $sendnewsletter->newsletterid = $eachnewsletter["id"];
                        $newslettercounter = new Newsletter();
                        $newslettercounter->id = $eachnewsletter["id"];

                        //Recipients
                        $mail->setFrom('[email protected]', $eachnewsletter["fromname"]);
                        $mail->addAddress($eachcontact["email"]);
                        $message1 = file_get_contents('/var/www/fakewebsite.com/public_html/admin/emailtemplates/newsletterunfilled.php');
                        $message1 = str_replace('{NEWSLETTERCONTENT}', $eachnewsletter["content"], $message1);
                        $message1 = str_replace('{First Name}', $eachcontact["name"], $message1);
                        $message1 = str_replace('..', "https://fakewebsite.com/admin", $message1);
                        $message1 = str_replace("api/unsubscribe.php?contactid={contactid}&newsletterid={newsletterid}", "https://fakewebsite.com/admin/newsletter/api/unsubscribe.php?contactid={contactid}&newsletterid={newsletterid}", $message1);
                        $message1 = str_replace('<span style="color: #ffffff;"><a style="color: #ffffff;" href="https://www.divinestatus.com" target="_blank" rel="noopener"><strong>SCHEDULE TRANPORT</strong></a></span>', '<span style="color: #ffffff;"><a style="color: #ffffff;" href="https://fakewebsite.com/admin/newsletter/api/linkclicked.php?url=https://www.fakewebsite.com&contactid={contactid}&newsletterid={newsletterid}" target="_blank" rel="noopener"><strong>SCHEDULE TRANPORT</strong></a></span>', $message1);
                        $message1 = str_replace('{First Name}', $eachcontact["name"], $message1);
                        $message1 = str_replace('{contactid}', $eachcontact["id"], $message1);
                        $message1 = str_replace('{newsletterid}', $eachnewsletter["id"], $message1);

                        $mail->isHTML(true);                                  //Set email format to HTML
                        $mail->Subject = $eachnewsletter["subject"];
                        $mail->Body = $message1;
                        $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

                        $sendnewsletter->delivered = 1;
                        $sendnewsletter->SendNewsletter();
                        $newslettercounter->NewsletterDelivered();

                        $result = array('status' => "success", 'message' => "Message sent.");
                        echo json_encode($result);


                        if (!$mail->send()) {
                            $result = array('status' => "error", 'message' => "Message not sent!.");
                            echo json_encode($result);
                            echo "Mail Not Sent";
                            $sendnewsletter->delivered = 0;
                            $sendnewsletter->SendNewsletter();
                        }

                        $mail->ClearAllRecipients();

                        sleep(1);
                    }
                }
            }
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文