Problemas No Email do Wordpress

Quando instalei meu primeiro WordPress em um Servidor Windows, descobri da maneira mais complicada que wordpress em windows não são 100% compatíveis na parte de envio de emails, ou seja, não enviam emails. Procurei em varios blogs de seo, tenologia, etc, mas finalmente encontrei a solução:

Por que o WordPress não envia emails estando hospedado em um Servidor Windows?

Wordpress não envia emails no Windows
WordPress não envia emails no Windows

O WordPress como outros aplicativos feitos em PHP, utiliza uma biblioteca chamada PHPMailer para realizar os envios de email através do do serviço de SMTP do servidor no qual está hospedado, que normalmente é um servidor linux. Este serviço SMTP é responsável pela entrega dos emails nos servidores de emails.

Esta biblioteca, originalmente, possui uma incompatibilidade com Servidores Windows, o que causa o problema no envio de mensagens.

Para corrigir isto, basta efetuar pequenas correções em um arquivo do WordPress

1 – Localize o arquivo wp-includes\class-phpmailer.php

Abra o arquivo e navegue até a linha com o seguinte código:

var $LE              = "\n";

Altere o conteúdo desta linha para:

var $LE              = "\r\n";

2 – Agora localize o seguinte conteúdo:

function AddrFormat($addr) {
   if(empty($addr[1])) {
     $formatted = $this->SecureHeader($addr[0]);
   } else {
     $formatted = $this->EncodeHeader($this->SecureHeader($addr[1]), \
'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
   }
   return $formatted;
 }

Altere TODO o conteúdo acima PARA:

function AddrFormat($addr) {
   return $this->SecureHeader($addr[0]);
}

3 – Suba o arquivo para o servidor e teste.

Já ocorreu do servidor não enviar emails mesmo depois desta alteração. Percebi que ele não conseguia enviar pois o email de origem não existia.

Corrigi criando um email, e dizendo ao servidor para enviar a partir deste email.

Outra coisa interessante é que quando o wordpress envia emails para você ele deve enviar a partir de wordpress@seusite.com.br, e quando você clica em responder, se não prestar atenção, pode acabar respondendo para seu servidor e não para o cliente que enviou email através do formulário de contato. Veja como resolver isso abaixo:

4 – Bônus – Responder contato do wordpress para quem te enviou email:

Usando o contact form 7, veja como configurei o servidor:

Nos cabeçalhos adicionais existe o campo From: que é o email de quem está enviando, no caso o servidor está gerando um email a partir de contato para você.

No campo Reply-to ele preencherá o email da pessoa que está enviando o contato a você, então quando você clicar em Responder no seu email, o servidor entenderá que você deseja responder a pessoa que enviou o email de contato para você  e não que deseja responder ao seu servidor de emails.

Formulario de Contato WordPress

Espero que gostem deste tutorial.

Participem enviando comentários, dúvidas ou contribuições.

Obrigado

Eduardo Gasparetto

10 comments on “WordPress Não Envia Emails no Servidor Windows. Por quê?

weldes
Reply

ainda nao consegui resolver meu problema com seu artigo, pode me falar como fazer isso, realmente nao envia nada, mesmo com as mudancas

    Reply

    Caro Weldes.

    Alguns pontos que encontrei dificuldades e talves possa estar acontecendo convosco:
    1- Verifique se o email a partir de onde o wordpress esta enviando existe, por exemplo, se ele envia emails a partir de wordpress@seudominio.com.br, este email deve existir. Isso fez diferença nos testes que realizei.
    2- Altere o codigo conforme descrito no artigo e envie ao servidor no local apropriado.
    3- Entre em contato com seu provedor para saber se o servidor de email é fechado para relay. Muitos servidore de emails aceitam emails apenas de 127.0.0.1 que é a maquina local, ou seja, ele mesmo, e talves seu servidor de emails esteja em outra máquina que não é o mesmo servidor de paginas, e solicite a liberação do relay para o ip da maquina do servidor de paginas.
    4 – Instale um plugin de smtp do wordpress, e tente fazer testes configurando e enviando emails na mão, para tentar descobrir algo.

    Bom, eram meus palpites, espero que ajude.

      Reply

      Prezado Eduardo,

      antes de mais, muito bom o tutorial! Mas meu caso é um pouco diferente, você poderia me ajudar?

      Tenho um blog em wordpress que era hospedado em windows e mudei recentemente para linux. Instalei um plugin de newsletter e, apesar de a principio estar tudo ok com as configurações, nada acontece, nenhum email é enviado.

      Meu servidor é locaweb.

      Alguma idéia?

      Um abraço, Felipe

Reply

Meu caro Eduardo,
o meu problema é um pouco diferente. Alguns emails ele envia e outros não. Por exemplo: quando coloco carlos@carlos.com.br o email vai tranquilamente, outro ionaldo@entornoonline.com.br e manuel@manuel.com.br, também envia. Exemplos que testei.

Quando coloco por exemplo: luiz@uol.com.br, nallpinheiro@gmail.com, mauro@ig.com.br, ele não envia. O que deduzi que quando é de um servidor de email “grátis” ele não envia, quando tem um domínio próprio ele envia.

Qual sua analise sobre essa situação?

Agradeço desde já

    Reply

    Ola Ionaldo.

    Seu problema provavelmente tem a ver com DNS reverso. Quando você manda um email,o servidor que recebe o email faz o caminho reverso para perguntar para o @dominio se foi ele que enviou este email.
    Resumidamente você precisa enviar os emails a partir do seu dominio, ou seja, usando um smtp autenticado, então quando seu servidor for criar os emails para enviar para você, não envie emails @qualquercoisa, use seu próprio dominio, exemplo site@entornoonline.com.br como sender dos emails que o sistema gera pra você, e usando login e senha.

    Espero ter ajudado.

    Atenciosamente

Reply

Olá Eduardo,

Como vai?

Escrevo na esperança de que possa me ajudar. Não estou encontrando a solução para o meu problema com o email do WP em nenhum lugar, pois parece-me que não tenho a possibilidade de alterar o código (caso contrário, por favor, diga-me como chegar ao código para alterá-lo?).

Acabo de comprar um domínio do WordPress.com, o pacote básico do WP que inclui apenas o registro de domínio próprio e 05 emails. Entretanto, o email não está funcionando. Não sei se o problema é incompatibilidade com servidor, o que acho estranho se for, pois o registro foi feito no próprio wordpress.com (upgrade do blog livre do WP) e o blog continua no WordPress.com, eu não o exportei para outro site de hospedagem. Deveria funcionar, então, não?

Sabe me orientar como proceder para resolver esse problema? Nem mesmo o email de confirmação do endereço que configurei para redirecionamento foi enviado. Nos meus testes, todos os emails falharam.

Agradeço desde já.

Patrícia Lima

    Reply

    Ola Patrícia,

    Talves seus emails estejam caindo em uma caixa de spam ou de fato o wordpress não os envia com o smtp padrão.

    Existe um plugin de wordpress chamado Wp Mail SMTP
    https://wordpress.org/plugins/wp-mail-smtp/

    Instala esse plugin e configura para mandar a partir de uma conta de email sua (smtp autenticado) usando seu login e senha do email.

    Isso deve resolver o problema.

    Abracos.

Reply

eu gostaria de saber se o contact form 7 no wordpress só funciona se estiver hospedado, pois tenho no local host na maq testando as configurações e apresndendo e não deu certo ainda.

tentei algumas vezes

abraço

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *