PHPmailer未检查HTTP错误500,语法似乎正常

PHPmailer未检查HTTP错误500,语法似乎正常,php,phpmailer,Php,Phpmailer,我必须向更多的用户发送邮件,我正在使用for循环,在我将此代码放入循环之前,一切似乎都正常工作,我得到了HTTP错误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.n

我必须向更多的用户发送邮件,我正在使用for循环,在我将此代码放入循环之前,一切似乎都正常工作,我得到了HTTP错误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错误500消失了,但我结束了for循环。
你能告诉我怎么了吗?(我看不到日志sry)

使用
语句放在文件顶部。它们实际上不像普通代码,更像是编译时指令。如果您使用的是一个非常旧的PHP版本,那么
use
语句本身可能会出错–您现在应该运行PHP7.4,很快就会运行8.0

如果从循环内部运行此代码,则致命错误非常简单–如果调用
require
多次加载同一类文件,则第二次将出现致命错误

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

导致500错误的原因将出现在web服务器的错误日志中。如果看不到日志,请使用
ini\u集启用错误消息显示('display\u errors',true)


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

500错误是一条通用的错误消息,几乎涵盖了PHP脚本可能出现的每一个错误。检查服务器错误日志以了解确切的错误消息。首先,请包括for循环。我在你的帖子里看不到。第二,为什么要设置
$indirizzo_destinatario='thevar'
thevar
不是电子邮件地址?您的代码是否在函数中?谢谢!这就解决了问题。这与此无关,但我想问一下,为什么在php中,当我回显一个数组时,结果会是“array”?因为它的empity?这就是PHP将数组转换为字符串的方式。在数组上执行
echo
时,会有一个从数组到字符串的隐式类型转换,这是没有定义好的。如果您想在调试时查看数组中的内容,最好使用
var_dump()
print_r()
。当我使用命令print_r()时,我得到的是数组([0]=>array()),这意味着您传入的数组包含一个空数组元素,如果您说:
$a=[[]]