Um formulário de contacto, um recibo de encomenda, um aviso de senha nova: mais tarde ou mais cedo o seu código tem de mandar um e-mail. A função simples que o PHP traz de fábrica manda, mas manda mal, e a mensagem acaba no lixo de quem a devia ler.
O PHPMailer resolve isso: em vez de deixar a mensagem à porta, entra no servidor de e-mail com utilizador e palavra-passe, exactamente como o seu telemóvel faz. A mensagem passa a ter dono, e um dono identificado é meio caminho para não ir para o spam.
Porque é que vale a pena trocar
| Com a função simples do PHP |
Com o PHPMailer autenticado |
| A mensagem sai sem se identificar. |
A mensagem sai em nome de uma caixa de correio que existe mesmo. |
| Erros perdem-se em silêncio: o código diz que enviou e ninguém recebe. |
Há uma resposta do servidor, e dá para a ler e mostrar. |
| Anexos e acentos dão trabalho a fazer à mão, e costumam sair mal. |
Anexos, HTML e acentos são tratados pela biblioteca. |
| O remetente pode ser qualquer coisa, o que é exactamente o que os filtros procuram. |
O remetente bate certo com o domínio, que é o que o SPF e o DKIM querem ver. |
As definições deste servidor
Não copie as portas de um tutorial qualquer da internet: variam de casa para casa. Estas são as desta.
| Campo |
Valor |
| Servidor de saída |
mail. seguido do seu domínio |
| Porta |
465 |
| Cifra |
SSL, ou seja, cifrada desde o primeiro instante. No PHPMailer é o valor smtps. |
| Autenticação |
Ligada. |
| Utilizador |
O endereço de e-mail completo da caixa que criou no cPanel. Não é só a parte antes da arroba, e não é o utilizador do cPanel. |
| Palavra-passe |
A da caixa de correio. |
| Remetente |
Essa mesma caixa. Não ponha o endereço do visitante como remetente: ponha-o em responder a. |
Para ler caixas de correio a partir de código, o IMAP está na porta 993, também em SSL, no mesmo mail. do seu domínio.
|
Crie uma caixa só para isto, com um nome que se perceba, em vez de usar a sua caixa pessoal. Se um dia a senha tiver de mudar, muda-se só num sítio e não fica sem e-mail. E se alguém abusar do formulário, desliga-se aquela caixa e não a sua.
|
Como se instala
| 1 |
Pelo Composer, se o projecto já o usa: é uma linha e fica actualizável. É o caminho recomendado.
|
|
| 2 |
Ou à mão, descarregando a biblioteca do repositório oficial do PHPMailer e incluindo os ficheiros. Funciona, mas fica por sua conta ir buscar as versões novas.
|
|
| 3 |
Onde a põe importa. Se der para escolher, ponha-a fora da pasta pública do site e inclua-a de lá. O que está dentro da pasta pública pode ser pedido pela internet.
|
|
| 4 |
Não escreva a palavra-passe no meio do código. Ponha-a num ficheiro de configuração à parte, fora da pasta pública, e leia-a de lá. Ver onde se guardam as credenciais.
|
|
Os erros que vão aparecer
| Mensagem |
O que é |
| SMTP connect() failed |
Não chegou ao servidor de e-mail. Se o código corre no nosso servidor, isto é quase sempre o nome escrito mal ou a cifra errada. Se corre no seu computador ou noutro fornecedor, pode ser a rede dele a bloquear saídas. |
| SMTP Error: Could not authenticate |
O utilizador não é o endereço completo, ou a palavra-passe está errada. Teste a mesma caixa no webmail: se lá entra, os dados estão bons e o problema está nas opções. |
| Certificado não confiável |
Está a ligar pelo endereço de IP ou por um nome que não está no certificado. Use mail. com o seu domínio. Não desligue a verificação do certificado para calar o erro: isso deita fora a proteção toda. |
| Envia, mas cai no spam de quem recebe |
A ligação está boa e falta a identidade do domínio. É a vez de SPF, DKIM e DMARC. |
| Envia para uns e não para outros |
Costuma ser filtro do lado de quem recebe, ou reputação. Ver porque é que o seu e-mail não sai nem entra. |
|
Ligue o modo de diagnóstico enquanto testa. O PHPMailer tem uma opção que imprime a conversa inteira com o servidor, linha a linha. É onde está a resposta, quase sempre em inglês e com um número. Desligue-a antes de pôr o site no ar, ou está a mostrar as suas senhas a quem abrir a página.
|
|
Um formulário sem travão é uma máquina de spam à espera de ser encontrada. Ponha uma verificação contra robôs, não deixe o visitante escolher o destinatário, e nunca copie o que ele escreveu para dentro dos cabeçalhos da mensagem. Um formulário aberto acaba a mandar milhares de mensagens em nome do seu domínio, e o preço disso é o domínio ficar queimado durante semanas.
|
Sobre quantidades, ritmo e listas, as boas práticas estão em como escrever um e-mail que não caia no spam.
PRODUTO RECOMENDADO E-mail profissional no seu domínio Caixas com o nome da sua empresa, sem publicidade, com filtro de spam. Ver planos |