Tutoriais

Atendimento em horário comercial via chat

Formulário de contato

Neste guia dispomos de exemplos de formulários de contato para seu site.

Há duas formas de realizar o envio:

Envio com autenticação local: Este envio utiliza o SMTP do servidor de hospedagem da Umbler, ideal para o envio de mensagens de seu site para um e-mail do administrador do mesmo, pois a mensagem utiliza um e-mail @umbler.net.
Será preciso apenas informar o destino da mensagem, os dados de autenticação serão gerados pelo servidor da Umbler de forma automática.

Envio com SMTP externo: Este envio utiliza um servidor de SMTP como o SendGrid ou do exchange da Umbler, recomendado para envios de seu site para e-mails de seus clientes.
Será preciso informar todos os dados do servidor SMTP, como host, login, senha e porta para saída das mensagens.

Todas as mensagens disparadas pelo SMTP local ou exchange da Umbler passam por um filtro anti-spam, assim mensagens de marketing ou campanhas são bloqueadas. Para o envio de mensagens em massa recomendamos a utilização do SendGrid, Mandrill ou MailGun.

NodeJS

Aqui é utilizado o Nodemailer para realizar o envio dos e-mails pela sua aplicação NodeJS. Neste arquivo é muito importante notar que os campos de user e password da conta de e-mail remetente do formulário é recomendado que sejam ocultados e explicitados em variáveis de ambiente em outro arquivo .env pois são campos obrigatórios para esse método funcionar e como boa prática não podem ser postos de forma bruta no código por serem dados obviamente sensíveis.

const express = require("express");
const bodyParser = require("body-parser");
const mailer = require('nodemailer');
require('dotenv').config()

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

const config = mailer.createTransport ({
    host: "smtp.umbler.com",
    port: 587,    
    auth: {     // Conta e senha de email remetente do dominio
        user: process.env.SMTP_USER, // Definidos em variável de ambiente por segurança
        pass: process.env.SMTP_PASS
    },
    tls: { rejectUnauthorized: false } // true para 465, falso para outras portas
});

app.get("/", (req, res) => 
    res.sendFile(`${__dirname}/contact.html`)); // Recebe dados do formulário

app.post("/send", (req, res) => {    
    var name = req.body.name; // Nome do cliente vindo do formulário
    var email = req.body.email; // Email do cliente 
    var emailContact = req.body.emailBody; // Conteúdo da mensagem
    
    var emailMessage = `Olá ${name},\n\nObrigada por nos contatar.\n\nSeu e-mail é: ${email}\n\nSua mensagem é: ${emailContact}\n`;

    const message = {
        from: process.env.SMTP_USER, // Conta remetente
        to: email, // Conta destinataria de envio do cliente
        replyTo: "meuemail@meudominio.com", // Notifica preenchimento formulario (opcional)
        subject: "Contato via formulário",
        text: emailMessage // Confirmação padrão de envio
    };

    config.sendMail(message, (error, info) => {
        if(error)
            return res.status(400).send(error);
        return res.status(200).end(info);
    });
});

app.listen(process.env.PORT || 3000 , () => {
    console.log("Server ouvindo na porta 3000!")
});

PHP

Neste arquivo apenas o campo $email_to = 'seu e-mail aqui que irá receber a mensagem'; deve ser alterado, informando dentro das aspas o e-mail de destino da mensagem.

<?php
$name = $_POST['name'];
//pega os dados que foi digitado no ID name.

$email = $_POST['email'];
//pega os dados que foi digitado no ID email.

$subject = $_POST['subject'];
//pega os dados que foi digitado no ID sebject.

$message = $_POST['message'];
//pega os dados que foi digitado no ID message.

$myEmail = "contato@meudominio.com";
//é necessário informar um e-mail do próprio domínio
$headers = "From: $myEmail\r\n"; $headers .= "Reply-To: $email\r\n"; /*abaixo contém os dados que serão enviados para o email cadastrado para receber o formulário*/ $corpo = "Formulário enviado\n"; $corpo .= "Nome: " . $name . "\n"; $corpo .= "Email: " . $email . "\n"; $corpo .= "Comentários: " . $message . "\n"; $email_to = 'seu e-mail aqui que irá receber a mensagem'; //não esqueça de substituir este email pelo seu. $status = mail($email_to, $subject, $corpo, $headers); //enviando o email. if ($status) { echo "<script> alert('Formulário enviado com sucesso!'); </script>"; //mensagem de form enviado com sucesso. } else { echo "<script> alert('Falha ao enviar o Formulário.'); </script>"; //mensagem de erro no envio. } ?>

Enviando e-mail autenticado utilizando seu e-mail criado na Umbler ou SMTP externo, como o SendGrid.

<?php
//Import the PHPMailer class into the global namespace
require("PHPMailer/PHPMailer.php");
require("PHPMailer/SMTP.php");
require("PHPMailer/Exception.php");

$mail = new PHPMailer();

// Define que a mensagem será SMTP
$mail->IsSMTP();

// Host do servidor SMTP externo, como o SendGrid.
$mail->Host = "smtp.servidorExterno.com.br";

// Autenticação | True
$mail->SMTPAuth = true;

// Usuário do servidor SMTP
$mail->Username = 'e-mail@dominio.com.br';

// Senha da caixa postal utilizada
$mail->Password = 'senha';

$mail->From = "email@dominio.com.br";
$mail->FromName = "Nome do Remetente ";
$mail->AddAddress('destinatario@dominio.com.br', 'Nome do Destinatário');

// Define que o e-mail será enviado como HTML | True
$mail->IsHTML(true);

// Charset da mensagem (opcional)
$mail->CharSet = 'iso-8859-1';

// Assunto da mensagem
$mail->Subject = "Mensagem Teste";

// Conteúdo no corpo da mensagem
$mail->Body = 'Conteudo da mensagem';

// Conteúdo no corpo da mensagem(texto plano)
$mail->AltBody = 'Conteudo da mensagem em texto plano';

//Envio da Mensagem
$enviado = $mail->Send();

$mail->ClearAllRecipients();

if ($enviado) {
  echo "E-mail enviado com sucesso!";
} else {
  echo "Não foi possível enviar o e-mail.";
  echo "Motivo do erro: " . $mail->ErrorInfo;
}
?>

ASP.NET

O envio é realizado de forma simples, apenas colocando o e-mail de destino da mensagem no campo "Email de destino".

MailMessage mail = new MailMessage();
mail.To.Add("Email de destino");
mail.Subject = subject;
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Body = message;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Send(mail);

Informe o e-mail de destino da mensagem no "Email de destino" e será preciso informar os dados do SMTP como abaixo:

MailMessage mail = new MailMessage();
mail.To.Add("Email de destino");
mail.From = new MailAddress("Email de");
mail.Subject = "Assunto";
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Body = "Mensagem";
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(email@dominio.com, senha);
client.Port = PortaSMTP;
client.Host = smtp.servidor.com;
client.EnableSsl = true ou false;
client.Send(mail);