PHPmailer unspected HTTP ERROR 500,语法似乎没问题

PHPmailer unespected HTTP ERROR 500, syntax seems ok

我必须向更多用户发送邮件,并且我正在使用 for 循环,一切似乎都正常,直到我将这段代码置于我的循环中,我得到了 HTTP ERROR 500,但我不知道为什么。

if (isset($riga_inscad[$y])) {
//PHPMAILER: inizio variabili da modificare:
$server_smtp = 'xxx';
$username_smtp= 'xxx';
$password_smtp ='xxx';
$indirizzo_mittente = 'xxx.net@xx.net';
$descrizione_mittente = 'xxxx';
$indirizzo_destinatario = 'thevar';
//fine variabili da modificare

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

        require "src/Exception.php";
        require "src/PHPMailer.php";
        require "src/SMTP.php";

        $mail = new PHPMailer(true); 

        $mail->IsSMTP();
        $mail->SMTPOptions = array(
          'ssl' => array(
          'verify_peer' => false,
          'verify_peer_name' => false,
          'allow_self_signed' => true
         )
        );
        $mail->SMTPAuth   = true;
        $mail->Host       = $server_smtp;
        $mail->Port       = 587;
        $mail->SMTPSecure = "tls"; 
        $mail->Username   = $username_smtp;
        $mail->Password   = $password_smtp;
        
        $mail->setFrom($indirizzo_mittente, $descrizione_mittente);
        $mail->addAddress($indirizzo_destinatario);

        $mail->Subject = "Scadenze SEA – Riepilogo mensile";
        $mail->Body    = '';
        $mail->IsHTML(true);
        if (!$mail->send())
            echo $mail->ErrorInfo;
        else
            echo "ok!";
 $mail->clearAllRecipients();

}

我注意到如果我删除这些行:

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

HTTP ERROR 500 消失了,但我结束了 for 循环。 你能告诉我有什么问题吗? (我看不到日志 sry)

use 语句放在文件的顶部。它们并不像普通代码,更像是 compile-time 指令。如果您使用的是 PHP 的真正旧版本,它可能会在 use 语句本身上出错 – 您现在应该是 运行 PHP 7.4,很快就会是 8.0。

如果您 运行 这段代码来自循环内部,那么致命错误非常简单——如果您调用 require 多次加载同一个 class 文件, 你第二次会遇到致命错误。

您通过将 true 传递给构造函数来启用异常,但您没有 try/catch 块,因此您可能会遇到致命的未捕获异常。

导致 500 错误的任何原因都会出现在您的网络服务器的错误日志中。如果看不到日志,请使用 ini_set('display_errors', true);.

启用错误消息显示

禁用 TLS 验证是一个非常糟糕的主意。这样做并不能解决任何问题,它只会隐藏问题并破坏系统的安全性。通过阅读 the PHPMailer troubleshooting guide 来正确修复它,其中详细介绍了该对象。