Send all WPMU emails via SMTP

时间:2013-06-04 作者:Ghinnersmee

我尝试过像“WP Mail SMTP”“WP SMTP”“Easy WP SMTP”“WP SMTP Config”这样的插件没有一个与WPMU兼容

2 个回复
SO网友:Pat J

如果我理解正确,您在多站点环境中的SMTP设置有问题;具体而言,SMTP设置不会从根站点传播到整个站点。

您可能需要为每个站点单独配置SMTP设置,即使您已经通过网络激活了插件。有些插件在编写时没有考虑到WPMU/Multisite。

不过,您可能可以通过编程方式设置SMTP设置。

Note: 以下代码未经测试,可能适用于您,也可能不适用于您。我也不能谈论它的性能,尽管我认为不应该有任何重大问题。

add_action( \'plugins_loaded\', \'wpse101829_set_smtp\' );
function wpse101829_set_smtp() {
    $default_smtp = array(
        \'host\' => \'smtp.example.com\',
        \'port\' => 25,
    );
    $option_name = \'_smtp_settings\';
    if ( is_multisite() ) {
        if ( ! get_site_option( $option_name ) ) {
            update_site_option( $option_name, $default_smtp );
        }
    } else {
        if ( ! get_option( $option_name ) ) {
            update_option( $option_name, $default_smtp );
        }
    }
}
然后,在上面的代码示例中,您将使用如下内容:

add_action( \'phpmailer_init\', \'wpse8170_phpmailer_init\' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
    // get the SMTP defaults
    if ( is_multisite() ) {
        $default_smtp = get_site_option( \'_smtp_settings\' );
    } else {
        $default_smtp = get_option( \'_smtp_settings\' );
    }

    $phpmailer->Host = $default_smtp[\'host\'];
    $phpmailer->Port = $default_smtp[\'port\']; // could be different
    $phpmailer->Username = \'[email protected]\'; // if required
    $phpmailer->Password = \'mypassword\'; // if required
    $phpmailer->SMTPAuth = true; // if required
    $phpmailer->SMTPSecure = \'ssl\'; // enable if required, \'tls\' is another possible value

    $phpmailer->IsSMTP();
}
以下参考文献参见法典第页:

SO网友:user3096626

WP Mail SMTP与多站点兼容这是一个很好的隐藏功能-您需要检查插件的源代码并向wp-config.php. 如果通过每个站点的“管理”面板配置WP Mail SMTP,则它将仅适用于已配置的站点,而不适用于网络管理

如何为wordpress multisite(WPMU)设置SMTP电子邮件

Check the code

/**
 * Setting options in wp-config.php
 * 
 * Specifically aimed at WPMU users, you can set the options for this plugin as
 * constants in wp-config.php. This disables the plugin\'s admin page and may
 * improve performance very slightly. Copy the code below into wp-config.php.
 */
define(\'WPMS_ON\', true);
define(\'WPMS_MAIL_FROM\', \'From Email\');
define(\'WPMS_MAIL_FROM_NAME\', \'From Name\');
define(\'WPMS_MAILER\', \'smtp\'); // Possible values \'smtp\', \'mail\', or \'sendmail\'
define(\'WPMS_SET_RETURN_PATH\', \'false\'); // Sets $phpmailer->Sender if true
define(\'WPMS_SMTP_HOST\', \'localhost\'); // The SMTP mail host
define(\'WPMS_SMTP_PORT\', 25); // The SMTP server port number
define(\'WPMS_SSL\', \'\'); // Possible values \'\', \'ssl\', \'tls\' - note TLS is not STARTTLS
define(\'WPMS_SMTP_AUTH\', true); // True turns on SMTP authentication, false turns it off
define(\'WPMS_SMTP_USER\', \'username\'); // SMTP authentication username, only used if WPMS_SMTP_AUTH is true
define(\'WPMS_SMTP_PASS\', \'password\'); // SMTP authentication password, only used if WPMS_SMTP_AUTH is true

结束