PHP 邮件程序不支持 wordpress 5.5
PHP mailer not Working with wordpress 5.5
我在 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/
这是因为您试图加载 WordPress 中不再存在的旧版本 PHPMailer,结果出现致命错误。您不必自己加载 PHPMailer,因为 WordPress 将其作为标准提供,因此请参考 their docs for how to send messages, and how to create a hook to inject a custom configuration.
您仍然可以自己加载它,但这样您就绕过了 WP 为您所做的一切,并对随之而来的一切负责,包括正确加载 类。为了帮助更新您的代码以使用 PHPMailer 6.x,请阅读 the upgrade guide, or .
随着 WordPress 升级到 5.5 版,可能需要包含 PHPMailer SMPT.php 文件。
include_once (ABSPATH . WPINC . '/class-phpmailer.php');
include_once (ABSPATH . WPINC . '/PHPMailer/SMTP.php');
$mail = new PHPMailer ();
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();
如果您想在插件中使用它并保持 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 );
}
我在 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/
这是因为您试图加载 WordPress 中不再存在的旧版本 PHPMailer,结果出现致命错误。您不必自己加载 PHPMailer,因为 WordPress 将其作为标准提供,因此请参考 their docs for how to send messages, and how to create a hook to inject a custom configuration.
您仍然可以自己加载它,但这样您就绕过了 WP 为您所做的一切,并对随之而来的一切负责,包括正确加载 类。为了帮助更新您的代码以使用 PHPMailer 6.x,请阅读 the upgrade guide, or
随着 WordPress 升级到 5.5 版,可能需要包含 PHPMailer SMPT.php 文件。
include_once (ABSPATH . WPINC . '/class-phpmailer.php'); include_once (ABSPATH . WPINC . '/PHPMailer/SMTP.php'); $mail = new PHPMailer ();
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();
如果您想在插件中使用它并保持 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 );
}