WordPress Não Envia Emails no Servidor Windows. Por quê?

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?

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 [email protected], 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.

Espero que gostem deste tutorial.

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

Obrigado

Eduardo Gasparetto

Facebook
Twitter
LinkedIn
WhatsApp

Posts relacionados