No último artigo, falei sobre a Mailtrap, e como se torna fácil testarmos o envio de email nos nossos projectos em desenvolvimento. Com este artigo, vou apresentar uma forma se configurar o nosso Mailtrap com um pequeno código de PHP.
PHP Mailer
Para este exercício, vamos usar o PHP Mailer. Para isso, vamos instalar o mesmo, usando o composer.
Basta criar uma pasta, e usar a linha de comandos dentro da mesma, e executar os seguintes comandos:
1 – Vamos criar um ficheiro composer.json
Composer init
Irá surgir algumas operações após correr o comando.
![](https://blog.coredesignz.com/wp-content/uploads/2020/05/composer_2.jpg)
Na imagem abaixo, está a configuração que eu fiz para este exemplo em concreto:
![](https://blog.coredesignz.com/wp-content/uploads/2020/05/composer_3_config.jpg)
Desta forma, temos então o PHPMailer pronto no nosso projecto para ser usado.
![](https://blog.coredesignz.com/wp-content/uploads/2020/05/compsoer_4_folder.jpg)
2 – Configurar o PHP Mailer com Mailtrap
Agora, podemos começar a configurar o nosso projecto, para enviar/receber emails, usando o Mailtrap e o PHP Mailer. No caso, basta usarmos a Class do PHP Mailer no nosso projecto, tal como já mostrei nos artigos da serie PHP: Programação Orientada a Objectos.
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
Temos também, que usar o required do autoload:
require 'vendor/autoload.php';
Agora, vamos instanciar o nosso PHP Mailer, para mais tarde adicionar a configuração, para então testarmos o envio/recepção dos emails:
$mail = new PHPMailer(true);
O PHP Mailer e instanciado com o valor “True”, para que assim permita usar excepções. Após isto, podemos então adicionar toda a configuração. Para isso, vamos usar um Try/Catch da seguinte forma:
try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Host = 'smtp.mailtrap.io';
$mail->SMTPAuth = true;
$mail->Username = 'YOUR_USERNAME';
$mail->Password = 'YOUR_PASSWORD';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = YOUR_PORT;
//Recipients
$mail->setFrom('testuser@email.com', 'Joe Who');
$mail->addAddress('otheruser@email.com', 'Joe User');
// Attachments
$mail->addAttachment('/path/to/file.jpg', 'file_name.jpg');
// Content
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Com esta simples configuração, ao aceder ao ficheiro index.php do projecto, que irá executar o código, iremos ver uma lista de operações que estão a ser realizadas, tal como as validações.
![](https://blog.coredesignz.com/wp-content/uploads/2020/05/phpmailer_envio.jpg)
Após o código ser executado, podemos ver na última linha se o email foi enviado com sucesso ou não.
De seguinda, vamos a nossa conta do Mailtrap, na inbox que criamos, e vamos poder então ver que os emails estão a cair nessa caixa de correio.
![](https://blog.coredesignz.com/wp-content/uploads/2020/05/mailtrap_inbox_blur.jpg)
Como podemos ver na imagem, recebemos o nosso email na inbox da Mailtrap, sendo que o nosso teste foi realizado com sucesso.
Para saberem como têm de configurar a vossa conta no código, podem ver o artigo que escrevi sobre o Mailtrap.
Este código vai ficar disponível na minha conta de Github, para conseguirem testar na vossa máquina e com a vossa conta da Mailtrap.