Tutorial configurar WordPress para enviar email por SMTP

Objetivos

  • Aprender a ter suporte de envio de emails pelo WordPress utilizando um servidor de emails externo e autenticado
  • Poder enviar email autenticado por uma caixa do gmail de forma simples ou outro servidor smtp
  • Poder utilizar o plugin Contact form 7 em conjunto com envio de mensagens autenticadas por smtp
  • Ter funcionalidade de envio de email pelo wordpress, mesmo que este esteja instalado em um container com docker

Requisitos para seguir o tutorial

  • Saber encontrar os arquivos da sua instalação do wordpress
  • Saber editar arquivos da sua instalação do wordpress
  • Ter uma caixa de email criada (gmail ou outro provedor) e saber a senha
    • Caso utilize o gmail: criar uma senha de APP
      • É preciso ter autenticação em 2 etapas ativada na sua conta do gmail para a opção de criar senha de APP ficar disponível

Tutorial passo a passo para configurar envio de email autenticado pelo wordpress

Passo 1 – Configurar seu tema para suporte a envio de email por smtp

Acesse a pasta do seu tema atual do wordpress, por exemplo:

cd wp-content/themes/TEMAqueESTAusando/

Edite ou crie o arquivo functions.php dentro do seu tema atual:

nano funcions.php

Agora adicione o conteúdo:

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->SMTPSecure = SMTP_SECURE;
    $phpmailer->Username   = SMTP_USERNAME;
    $phpmailer->Password   = SMTP_PASSWORD;
    $phpmailer->From       = SMTP_FROM;
    $phpmailer->FromName   = SMTP_FROMNAME;
}

Lembrando que o código acima é da linguagem PHP, então precisa estar dentro das tags <?php e ?>.

Passo 2 – Configurar o wordpress para utilizar envio de email pelo servidor SMTP definido, ao invés do sendmail padrão

Agora é necessário editar o arquivo wp-config.php que está na base da instalação do wordpress.

nano wp-config.php

É necessário adicionar o conteúdo:

define( 'SMTP_HOST', 'smtp.gmail.com' );
define( 'SMTP_AUTH', true );
define( 'SMTP_PORT', '465' );
define( 'SMTP_SECURE', 'ssl' );
define( 'SMTP_USERNAME', 'seuemail@gmail.com' ); // Sua conta de email
define( 'SMTP_PASSWORD', 'suasenhatipoAPPpasswordgerada' ); // Sua senha de APP gerada no gmail (autenticação em 2 etapas precisa estar ativada para ter essa opção)
define( 'SMTP_FROM', 'seuemail@gmail.com' ); // Endereço de remetente, se quiser diferente do seu endereço de email
define( 'SMTP_FROMNAME', 'Nome Sobrenome' ); // Nome Remetente

Caso utilize seu próprio servidor de email, também é possível utilizá-lo. Basta realizar as modificações para sua caixa de email do seu servidor e o endereço smtp. Então, seguindo o exemplo do Tutorial para criar servidor de email, as configurações seriam muito semelhantes ao código abaixo:

define( 'SMTP_HOST', 'mail.seudominio.com.br' );
define( 'SMTP_AUTH', true );
define( 'SMTP_PORT', '465' );
define( 'SMTP_SECURE', 'ssl' );
define( 'SMTP_USERNAME', 'seuemail@seudominio.com.br' ); // Sua conta de email
define( 'SMTP_PASSWORD', 'suasenhatipoAPPpasswordgerada' ); // Sua senha da caixa de email
define( 'SMTP_FROM', 'seuemail@seudominio.com.br' ); // Endereço de remetente, se quiser diferente do seu endereço de email
define( 'SMTP_FROMNAME', 'Nome Sobrenome' ); // Nome Remetente

Conclusão

Esta é uma alternativa simples e objetiva para ter suporte a envio de emails autenticados com wordpress. Nativamente o wordpress irá tentar utilizar o método de envio de email padrão do servidor onde está configurado, usualmente o sendmail. Caso utilize seu wordpress em um container com docker, o envio autenticado é uma boa alternativa para garantir funcionalidades de envio de email, sem a necessidade de utilizar algum plugin mais complicado, como o WP MAIL SMTP.