As outras respostas a esta postagem, embora forneçam uma solução funcional, não abordam o problema de segurança de armazenar suas credenciais de SMTP em um arquivo de plug-in ou em functions.php. Em alguns casos, isso pode ser correto, mas as práticas recomendadas ditariam o armazenamento dessas informações de maneira mais segura. Não há uma boa razão para não seguir as práticas recomendadas quando se trata de proteger suas credenciais.
Alguns sugeririam salvá-lo no banco de dados como uma opção, mas também forneceria os mesmos problemas de segurança, dependendo do número de usuários administrativos que seu site possui e se esses usuários poderiam ver essas credenciais de login. Esta é também a mesma razão para não usar um plugin para isso.
A melhor maneira de fazer isso é definir constantes para as informações do phpmailer no seu arquivo wp-config.php. Isso realmente foi discutido como um recurso no Mail Component , mas não foi aceito como um aprimoramento real em desta vez. Mas você pode fazer você mesmo adicionando o seguinte ao 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
Uma vez que estes são definidos em wp-config.php, eles podem ser usados em qualquer lugar usando a constante definida. Então você poderia usá-los em um arquivo de plug-in ou em seu functions.php. (Específico para o OP, use um arquivo de plugin.)
/**
* 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;
}
Há um pouco mais de detalhes sobre este nesta postagem e um gist no github aqui .