O que é e para que serve SMTP?

Certamente você já se perguntou como que os sites enviam mensagens através dos formulários, e como essas mensagens chegam até a sua caixa de e-mails, a resposta é simples, via SMTP.

SMTP (Simple Mail Transfer Protocol), ou em português “Protocolo de Transferência de Correio Simples”, é um protocolo de comunicação usado para o envio e recebimento de mensagens de e-mail através da internet. É através do SMTP que você envia e recebe seus e-mails diariamente.

Envio de mensagens SMTP através de formulários

O protocolo SMTP também possibilita o envio de mensagens de e-mail de forma automatizada e autenticada. Isso é comumente utilizado para notificar administradores a respeito de novas mensagens através de formulários, onde após as devidas validações, é possível (utilizando bibliotecas de terceiros, e até mesmo a própria função do PHP) fazer o envio de mensagens utilizando o protocolo SMTP.

Como fazer o envio de mensagens com SMTP?

Para cada linguagem de programação, você precisa verificar a documentação para saber como fazer o envio de mensagens via SMTP. Eu vou dar um exemplo simples de como fazer o envio com PHP. Veja o código abaixo:

<?php
// E-mails 
$de = "[email protected]";
$para = "[email protected]";

// Assunto da mensagem
$assunto = "Teste de e-mail via SMTP";

// Mensagem
$mensagem = "Olá,\nEste é um teste de e-mail enviado via SMTP utilizando PHP.";

// Cabeçalho
$cabecalhos = "From: ".$de . "\r\n" . "Reply-To: ".$de;

// Envio do e-mail
if (mail($para, $assunto, $mensagem, $cabecalhos)) {
    echo "E-mail enviado com sucesso!";
} else {
    echo "Erro ao enviar o e-mail.";
}
?>

Nesse exemplo, estou usando a função mail() do PHP. Essa função faz o envio de e-mails diretamente da hospedagem, então para funcionar corretamente, é recomendado que você configure os serviços de SMTP corretamente.

PHPMailer

Existem algumas bibliotecas que facilitam o envio de mensagens via SMTP. Uma biblioteca muito conhecida para PHP é a biblioteca PHPMailer, com ela você consegue definir diversos parâmetros, especificando qual o host, qual e-mail, senha, autenticação, remetente, e quais e-mails vão receber a mensagem, e além de tudo, você consegue fazer o envio de forma autenticada. Realmente é uma ótima biblioteca para quem trabalha com PHP.

Curiosidade: o próprio WordPress utiliza essa biblioteca para fazer o envio das mensagens do site.

Exemplo de envio com PHPMailer

Veja um exemplo de como fazer o envio de uma mensagem utilizando a biblioteca PHPMailer:

<?php

try {
    // Configurações do envio
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;            // Habilita o debug (para testes)
    $mail->isSMTP();                                  // Envia usando SMTP
    $mail->Host       = 'smtp.example.com';           // Servidor que vai fazer o envio (se você tiver um serviço de e-mail, consulte ele para conseguir essa informação)
    $mail->SMTPAuth   = true;                         // Habilita a autenticação
    $mail->Username   = '[email protected]';           // Username (geralmente o e-mail)
    $mail->Password   = 'secret';                     // Password (geralmente a senha do e-mail)
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;  // E-amil seguro (precisa verificar com seu serviço de e-mail)
    $mail->Port       = 465;                          // Porta para conectar, geralmente 587 se for TLS e 465 se for SSL (verifique as configurações com sua hospedagem, cada uma tem uma configuração)

    // Quem vai enviar e receber
    $mail->setFrom('[email protected]', 'Rafael');         // E-mail e nome de quem está enviando
    $mail->addAddress('[email protected]', 'Joe User');     // E-mail de quem vai receber e nome (pode duplicar essa linha quantas vezes quiser e adicionar mais e-mails)
    $mail->addAddress('[email protected]');               // O nome é opcional, obrigatório mesmo é só o e-mail
    $mail->addReplyTo('[email protected]', 'Information'); // Quando o usuário clicar em responder, qual e-mail deve aparecer
    $mail->addCC('[email protected]');                       // E-mail de quem vai receber como "cópia" (pode ser duplicado várias vezes também)
    $mail->addBCC('[email protected]');                     // E-mail de quem vai receber como "cópia oculta" (pode ser duplicado várias vezes também)

    // Anexos
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Adiciona um anexo (pegue o o caminho da variável $_FILES do PHP)
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Adiciona um anexo, e como segundo parametro, pode informar o nome dele (pode duplicar quantas vezes quiser para adicionar mais, fique atento ao tamanho dos arquivos, e-mails tem limite de tamanho)

    // Conteúdo
    $mail->isHTML(true);                                                          // Define que vai usar HTML no conteúdo (se não definir, as tags HTML não serão convertidas)
    $mail->Subject = 'Here is the subject';                                       // Assunto da mensagem
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';             // Conteúdo da mensagem
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';  // Conteúdo alternativo, caso não suporte HTML (dificilmente utilizado)

    // Envia o e-mail com tudo que foi definido nas linhas acima
    $mail->send();

    // Se chegou até aqui, quer dizer que foi enviado
    echo 'Message has been sent';
} catch (Exception $e) {

    // Caso não for enviado por qualquer motivo, cai nessa linha, e você consegue verificar o retorno para saber o que houve e porque não enviou
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Como você pode ver, com essa biblioteca é muito mais fácil fazer o envio. E você ainda pode definir vários parâmetros diretamente no código, sem a necessidade de fazer essas configurações no servidor.

Gostou? Compartilhe clicando nos links abaixo:

Nenhum comentário

Compartilhar
Mais antigos
Mais recentes
user-picture
user-picture
WebDesignDevBR
Não hesite em comentar, sejam dúvidas, elogios ou reclamações!

Parece que ainda ninguém teve dúvidas relacionadas a esta postagem 🤥

Não se preocupe, você pode enviar seu comentário sempre que quiser. Além dos outros usuários poderem ajudar, também faremos o possível para ajudá-lo.

Que tal escrever um comentário agora mesmo?