Enviar e-mail a partir do seu código com o PHPMailer

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.

O envio falha e não percebe a mensagem? Mande-nos o texto do diagnóstico, sem a senha.

Abrir um pedido de suporte

VEJA TAMBÉM

E-mail profissional

Planos de hospedagem e o que cada um inclui

PRODUTO RECOMENDADO

E-mail profissional no seu domínio

Caixas com o nome da sua empresa, sem publicidade, com filtro de spam.

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?