Efectuar o envio de e-mails via PHP de forma autenticada
Introdução
O envio de forma autenticada do e-mail assegura que o código PHP efectua o envio do e-mail após se autenticar ao invés de se basear na função mail().
A principal vantagem deste tipo de envios é que assegura que os cabeçalhos não são manipulados pelos servidores web, além de ser a única forma de garantir que os emails são efectivamente enviados.
Pré-requisitos
Para completar este guia é necessário possuir uma das seguintes frameworks:
- PHPMailer – https://github.com/PHPMailer/PHPMailer
- SwiftMailer – http://swiftmailer.org/
- possuir uma caixa de e-mail criada no painel de controlo, tendo registado o nome de utilizador e a respectiva password
Instalação
Os passos demonstrados abaixo serão efectuados utilizando a framework Swiftmailer.
Para dar início ao processo efectuar o download do framework (https://github.com/swiftmailer/swiftmailer/archive/5.x.zip)
Após descompactar o ficheiro, deverá enviar para a sua conta de alojamento por FTP a pasta “lib” e os seus respectivos conteúdos
Após efectuar este procedimento irão existir no FTP do seu alojamento pelo menos 2 pastas: a pasta com o nome do seu domínio e outra pasta com o nome “lib” e os respectivos conteúdos.
Efectuar o envio de forma autenticada
Neste exemplo será criado um novo ficheiro de nome “smtp.php” para efectuar o envio. Caso já tenha o seu site desenvolvido deverá adaptar o código com base no exemplo abaixo.
- Criar dentro da pasta com o nome do domínio o ficheiro de nome “smtp.php”
De seguida o ficheiro deverá conter as seguintes linhas para um envio com sucesso:
Nota: em caso de anomalia no envio alterar a porta de envio para a porta 587 em vez de 25.
<?php
// inclusão da framework no código
require_once '../lib/swift_required.php';// definir a autenticação via SMTP // mail.dominios.pt -> deverá trocar pelo endereço de e-mail do seu domínio // webmaster@dominio.tld -> deverá trocar pelo seu endereço de e-mail // password_caixa_email -> deverá preencher com a password da respectiva caixa
$transport = Swift_SmtpTransport::newInstance('mail.dominio.tld', 25) ->setUsername('webmaster@dominio.tld') ->setPassword('password_caixa_email') ;$mailer = Swift_Mailer::newInstance($transport);
// Criar o cabeçalho, assim como a mensagem
$message = Swift_Message::newInstance('Assunto email') ->setFrom(array('webmaster@dominio.tld' => 'webmaster')) ->setTo(array('destinatario@dominio2.tld')) ->setBody('Corpo da mensagem') ;// Efectuar o envio$result = $mailer->send($message);