这篇文章的其他答案虽然提供了一个可行的解决方案,但没有解决将SMTP凭据存储在插件文件或函数中的安全问题。php。在某些情况下,这可能还可以,但最佳做法要求以更安全的方式存储此信息。在保护您的凭据时,没有理由不遵循最佳做法。
有些人建议将其作为一个选项保存到DB中,但也会根据站点的管理用户数量以及这些用户是否应该能够看到这些登录凭据来提供相同的安全问题。这也是不使用插件的原因。
最好的方法是在wp配置中为phpmailer信息定义常量。php文件。这实际上是discussed as a feature in the Mail Component, 但目前还没有被视为真正的增强。但您可以通过将以下内容添加到wp config中来自己完成。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 config中定义了这些。php,通过使用定义的常量,它们可以在任何地方使用。因此,您可以在插件文件或函数中使用它们。php。(特定于OP,请使用插件文件。)
/**
* This function will connect wp_mail to your authenticated
* SMTP server. Values are constants set in wp-config.php
*/
add_action( \'phpmailer_init\', \'send_smtp_email\' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$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;
}
这里有更多的细节
in this post 和a
gist on github here.