【问题标题】:PHP mailer not Working with wordpress 5.5PHP 邮件程序不适用于 wordpress 5.5
【发布时间】:2020-12-08 21:40:32
【问题描述】:

我在 wordpress 5.4 上有一个网站,最近它已更新到 5.5 版,现在我无法使用 PHPMailer 发送电子邮件。我得到的错误是“您的网站出现严重错误”。以下代码适用于以前的 wordpress 版本。

include_once( ABSPATH . WPINC . '/class-phpmailer.php' );
include_once( ABSPATH . WPINC . '/includes/PHPMailer/PHPMailerAutoload.php' );

$mailserver_url   = "[mailserver_url]";
$mailserver_login =  "[mailserver_login]";
$mailserver_pass  =  '[mailserver_pass]';
$mailserver_port  =  '[mailserver_port]';
$email = '[email]';

$mail             = new PHPMailer;
$mail->ClearAttachments();
$mail->isSMTP();
$mail->SMTPAuth    = true;
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => false
    )
);
$mail->Host        = $mailserver_url;
$mail->Port        = $mailserver_port;
$mail->Username    = $mailserver_login;
$mail->Password    = $mailserver_pass;
$mail->setFrom( $email );
$mail->addReplyTo( $mailserver_login );
$mail->addAddress( $email );
$mail->Subject = 'The Subject';
$mail->isHTML();
$mail->Body = '<p>Helloo</p>';
if ( $mail->Send() ) {
   echo 'sent';
}

我查看了下面的文章,但我无法修复它https://wordpress.org/support/topic/fatal-error-after-updating-to-wp-5-5/

【问题讨论】:

  • 检查服务器的错误日志,或激活 WP_DEBUG 并将错误记录到文件中,这应该为您提供有关严重错误的更多详细信息。另外,请添加何时引发严重错误:页面加载时,电子邮件发送时?

标签: wordpress phpmailer


【解决方案1】:

如果您想在插件中使用它并保持 PHP Mailer 与旧版 WordPress 兼容,这是完整的解决方案。

global $wp_version;
if( $wp_version < '5.5') {
    require_once(ABSPATH . WPINC . '/class-phpmailer.php');
    require_once(ABSPATH . WPINC . '/class-smtp.php');
    $mail = new PHPMailer( true );
}
else {
    require_once(ABSPATH . WPINC . '/PHPMailer/PHPMailer.php');
    require_once(ABSPATH . WPINC . '/PHPMailer/SMTP.php');
    require_once(ABSPATH . WPINC . '/PHPMailer/Exception.php');
    $mail = new PHPMailer\PHPMailer\PHPMailer( true );
}

【讨论】:

    【解决方案2】:

    随着 WordPress 升级到 5.5 版,可能需要包含 PHPMailer SMPT.php 文件。

    include_once (ABSPATH . WPINC . '/class-phpmailer.php');
    include_once (ABSPATH . WPINC . '/PHPMailer/SMTP.php');
    $mail = new PHPMailer ();
    

    【讨论】:

      【解决方案3】:

      这是因为您尝试加载 WordPress 中不再存在的旧版本 PHPMailer,结果导致致命错误。您不必自己加载 PHPMailer,因为 WordPress 将其作为标准提供,因此请参阅 their docs for how to send messages,以及如何创建 a hook to inject a custom configuration

      您仍然可以自己加载它,但这样做会绕过 WP 为您所做的一切,并对随之而来的一切负责,包括正确加载类。要帮助更新您的代码以使用 PHPMailer 6.x,请阅读 the upgrade guidethis question

      【讨论】:

      【解决方案4】:

      WordPress 现已将 PHP 邮件程序移至子目录,您需要更新代码如下:

      在函数顶部添加:

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

      将您的代码进一步更新为:

      require_once(\ABSPATH . \WPINC . "/PHPMailer/PHPMailer.php");
      require_once(\ABSPATH . \WPINC . "/PHPMailer/Exception.php");       
      require_once(\ABSPATH . \WPINC . "/PHPMailer/SMTP.php");
      $mail = new PHPMailer();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        • 2013-10-30
        • 1970-01-01
        • 2013-04-09
        • 2021-12-13
        • 1970-01-01
        相关资源
        最近更新 更多