Se seu serviço de hospedagem não tem servidor de e-mails (ou se o servidor de e-mails vive caindo, ou se é impossível de configurar, etc.) você pode enviar os e-mails do WordPress através de uma conexão SMTP com outro servidor com o plugin WP Mail SMTP.

Para enviar os e-mails através do gmail de forma mais segura, não é mais aconselhável usar os dados SMTP do Google. Agora o plugin WP Mail SMTP precisa do código de uma aplicação web. Embora isso possa parecer trabalhoso, na verdade é um processo que, além de rápido, é grátis. Além disso, usar os dados de SMTP do Google requeria uma outra configuração (usar aplicativos menos seguros) que era mais complicada do que obter o seu token.

Passo 1: Instale o plugin WP Mail SMTP

Baixe o plugin através do repositório ou acesse seu Painel, vá em Plugins, depois em Adicionar Novo e digite WP Mail SMTP (a imagem do plugin é um pombo). Instale e ative.

Vá em Configurações→ WP Mail SMTP e preencha os campos E-mail do remetenteNome do remetente. IMPORTANTE: o campo E-mail do remetente precisa ser preenchido com o seu endereço do gmail.

No campo Mailer selecione Gmail e marque o campo Configura o endereço de retorno para corresponder ao E-mail do remetente.

Na seção logo abaixo você vai precisar dos códigos da sua aplicação Web lá no Gmail. Siga os próximos passos, ou envie este link para o seu cliente, para consegui-los.

Passo 2: Crie uma Aplicação Web

O Google disponibiliza uma ferramenta chamada Google API. Lá você consegue utilizar os serviços do Google externamente, como Google Maps, Gmail, Drive e etc. Lá você vai ter Projetos, APIs e Credenciais. Uma visão geral, para entender melhor, seria:

  • Meu projeto
    • API do Gmail
      • Credenciais
  • Outro projeto
    • API do Google Maps
      • Credenciais
    • API do Gmail
      • Credenciais

E assim por diante. É legal entender essa organização, porque o Google costuma alterar um pouco a navegação dessa área, então entendendo como funciona, você vai se achar mais fácil se mexerem lá.

Os passos abaixo são necessários para obter os dois códigos necessários para fazer o plugin funcionar com o Gmail. É preciso ter o valor do campo Authorized redirect URI, fornecido pelo WP Mail SMTP, para completar o processo.

O que é preciso fazer:

  1. Faça seu login e acesse o registro de aplicações do Gmail;
  2. Depois de acessar, você verá uma tela que diz Registre seu aplicativo no serviço Gmail API no Console de API do Google. Você pode selecionar algum projeto já existente ou não mexer para criar um novo.
  3. Na próxima tela você verá um aviso de que A API está ativada. Se você não usou nenhum projeto já existente, o Google criou um projeto chamado My Project para você. Clique em Acessar credenciais;
  4. Na próxima tela você precisará responder um formulário para descobrir quais credenciais você precisa. Preencha da seguinte forma:
    Qual API você usa? Gmail API
    De onde você chamará a API? Servidor da Web (por exemplo, node.js, Tomcat)
    Que dados você acessará? Dados do usuário
  5. Clicando em Preciso de quais credenciais? você precisará preencher outro formulário. Ao preencher este formulário, você receberá os dados necessários para voltar ao WordPress e terminar a configuração do plugin. Preencha da seguinte forma:
    Nome: deixe o padrão ou altere para qualquer outra coisa, não fará diferença para obter os códigos (este campo só é usado como referência).
    Origens JavaScript autorizadas: o endereço do seu site com http:// ou https//, mas sem / no final. No meu caso ficou https://felipeelia.com.br
    URIs de redirecionamento autorizados: como eu disse no começo desta seção, o valor deste campo é fornecido pelo plugin, na tela de configuração, no campo Authorized redirect URI. Ao lado do campo existe um botão que já copia o valor para você:
    No fim das contas, fica assim:
  6. Na tela seguinte você configurará os dados que aparecerão na tela de consentimento de uso da aplicação. Na verdade esta tela só será exibida para você, afinal só você, através do seu site WordPress, usará o aplicativo.
    Endereço de e-mail: deixe o seu
    Nome do produto mostrado aos usuários: coloque o nome do seu site. Só é usado para referência.
  7. Clique em Continuar e, na tela seguinte, em Farei isso mais tarde. Você será redirecionado para uma tela com a lista de IDs do cliente. Clique no ícone de lápis da linha (se você não mexeu no nome do Passo 5 desta lista, o nome será Cliente Web 1);
  8. A tela que abre tem, no começo, os dois dados que precisamos: ID do clienteChave secreta do cliente. IMPORTANTE: cuidado para não copiar espaços em branco nem antes de depois dos valores.

É hora de voltar para o WordPress.

Passo 3: Concedendo acesso e testando o envio de e-mails

Volte para a tela de configuração do plugin (Painel→ Configurações→ WP Mail SMTP) para completar o processo, preenchendo os valores de Client IDClient Secret e salvando. Cuidado para não colar espaços em branco antes ou depois dos valores.

Ao clicar em Save Settings e rolar a tela para baixo, você verá que apareceu um botão novo para que você possa autorizar o plugin a usar sua conta do gmail. Clique nele e siga o fluxo para permitir que o plugin use sua conta.

Depois de autorizado, volte para a tela de configuração do plugin e clique na aba Email test para testar se os envios estão sendo feitos.

Possíveis erros

Erros gerais

Confira os valores de Client ID e Client Secret.

Erro 406 – Not Acceptable

Ao tentar instalar aqui no site, tive um problema no retorno do Google para o meu site. A parte final da URL contém um https://, que o mod_security trava. Se é o seu caso, tente desativar o mod_security no painel da sua hospedagem ou, se não houver esta opção, entre em contato com o suporte.

Se sua hospedagem não liberar seu acesso, há uma gambiarra um modo de contornar. Abra o arquivo src/Providers/Gmail/Auth.php e encontre o trecho

if ( isset( $_GET['scope'] ) ) {
    $scope = urldecode( $_GET['scope'] );
}

(na minha versão é a linha 191) e altere para

if ( isset( $_GET['scope'] ) ) {
    $scope = urldecode( $_GET['scope'] );
} else {
    $scope = 'https://www.googleapis.com/auth/gmail.send';
}

Tente acessar novamente, dessa vez retirando da URL tudo do &scope= pra frente. Veja se funciona e não esqueça de desfazer a sua mudança, isto é, de voltar o arquivo ao seu conteúdo original.


Este conteúdo é baseado na documentação oficial do plugin.

Aqui no blog também expliquei como enviar e-mails pelo PHP em localhost (Linux/Ubuntu).