以下是处理您的问题的方法。它分为两部分。首先,您将创建连接作为常量,以便稍后使用。最好的方法是在wp config中。php。(您提到您正在自定义插件中执行此操作。如果这是可移植的,那么您可能希望将此更改为在db中保存设置。)其次,您将应用一个钩住WP使用的phpmailer的函数。在该函数中,您可以定义使用SMTP连接而不是默认连接的条件。
您可以在wp config中设置SMTP凭据和服务器连接信息。php作为常量,如下所示:
/*
* Set the following constants in wp-config.php
* These should be added somewhere BEFORE the
* constant ABSPATH is defined.
*/
define( \'SMTP_USER\', \'[email protected]\' ); // Username to use for SMTP authentication
define( \'SMTP_PASS\', \'smtp password\' ); // Password to use for SMTP authentication
define( \'SMTP_HOST\', \'smtp.example.com\' ); // The hostname of the mail server
define( \'SMTP_FROM\', \'[email protected]\' ); // SMTP From email address
define( \'SMTP_NAME\', \'e.g Website Name\' ); // SMTP From name
define( \'SMTP_PORT\', \'25\' ); // SMTP port number - likely to be 25, 465 or 587
define( \'SMTP_SECURE\', \'tls\' ); // Encryption system to use - ssl or tls
define( \'SMTP_AUTH\', true ); // Use SMTP authentication (true|false)
define( \'SMTP_DEBUG\', 0 ); // for debugging purposes only set to 1 or 2
将其添加到wp配置后。php文件,您可以使用常量通过SMTP连接和发送任何电子邮件。可以通过挂接phpmailer\\u init操作并使用该操作使用上面定义的常量设置连接条件来实现这一点。
在您的特定情况下,您可能希望在函数中添加一些条件逻辑,以标识要通过SMTP发送的条件。设置您的条件,以便只有您的条件使用phpmailer的SMTP连接,其他所有条件将使用已经使用的任何连接。
因为我们不知道你的OP是什么,所以我在这里用一个通用的true === $some_criteria
:
add_action( \'phpmailer_init\', \'send_smtp_email\' );
function send_smtp_email( $phpmailer ) {
if ( true === $some_criteria ) {
if ( ! is_object( $phpmailer ) ) {
$phpmailer = (object) $phpmailer;
}
$phpmailer->Mailer = \'smtp\';
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
// any other case would not change the sending server
}
这个概念来自github的以下要点:
https://gist.github.com/butlerblog/c5c5eae5ace5bdaefb5d此处的一般说明:http://b.utler.co/Y3