Porque devo utilizar um formulário em PHPMailer?
Um formulário de contato em seu site facilita a comunicação de seus clientes e pessoas que têm interesse em seu negócio. No caso do PHPMailer, o envio é feito de forma autenticada.
Isto é, você utiliza o servidor SMTP do seu domínio para enviar as mensagens. De um modo não autenticado você normalmente faz o envio através do próprio servidor web. Você pode conferir a documentação completa no endereço https://github.com/PHPMailer/PHPMailer.
E como utilizar essa classe de envio?
Para conseguir enviar emails pelo seu site via autenticação SMTP será necessário fazer uso da classe. Portanto, faça o download da versão mais recente pelo link informado acima ou então faça o download da versão 5.2.23 (abril de 2017) aqui – .
Depois de ter baixado, insira os arquivos PHPMailerAutoload.php, class.phpmailer.php e class.smtp.php em alguma pasta do seu FTP. Neste exemplo vamos utilizar uma pasta chamada autenvio.
Configurando os dados de autenticação SMTP
Crie um novo arquivo no mesmo nível do diretório onde colocou os arquivos da classe. O nome do arquivo fica a sua escolha, neste exemplo será utilizado o envia.php.
O arquivo deve conter o código abaixo e você deve fazer as devidas alterações para que o mesmo funcione:
Linha 3 – require_once(“autenvio/PHPMailerAutoload.php”): Defina o caminho correto do arquivo class.phpmailer.php
Linha 9 – $mail->Host = “smtp.seudominio.com.br”: Defina corretamente o seu host de envio SMTP
Linha 14 – $mail->Username = ‘[email protected]’: Conta que fará o envio das mensagens (deve ser uma conta existente e ativa no seu domínio)
Linha 15 – $mail->Password = ‘senha’: Defina a senha da sua conta de email que fará o envio da mensagem
Linha 18 – $mail->Sender = “[email protected]”: Conta que fará o envio das mensagens (deve ser uma conta existente e ativa no seu domínio)
Linha 23 – $mail->AddAddress(‘[email protected]’): Defina a conta que receberá as mensagens
<?php
// Adiciona o arquivo class.phpmailer.php - você deve especificar corretamente o caminho da pasta com o este arquivo.
require_once("autenvio/PHPMailerAutoload.php");
// Inicia a classe PHPMailer
$mail = new PHPMailer();
// DEFINIÇÃO DOS DADOS DE AUTENTICAÇÃO - Você deve alterar conforme o seu domínio!
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.seudominio.com.br"; // Seu endereço de host SMTP
$mail->SMTPAuth = true; // Define que será utilizada a autenticação - Mantenha o valor "true"
$mail->Port = 587; // Porta de comunicação SMTP - Mantenha o valor "587"
$mail->SMTPSecure = false; // Define se é utilizado SSL/TLS - Mantenha o valor "false"
$mail->SMTPAutoTLS = true; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"
$mail->Username = '[email protected]'; // Conta de email existente e ativa em seu domínio
$mail->Password = ''; // Senha da sua conta de email
// DADOS DO REMETENTE
$mail->Sender = "[email protected]"; // Conta de email existente e ativa em seu domínio
$mail->From = "[email protected]"; // Sua conta de email que será remetente da mensagem
$mail->FromName = "Form do site"; // Nome da conta de email
// DADOS DO DESTINATÁRIO
$mail->AddAddress('[email protected]', 'Nome - Recebe1'); // Define qual conta de email receberá a mensagem
//$mail->AddAddress('[email protected]'); // Define qual conta de email receberá a mensagem
//$mail->AddCC('[email protected]'); // Define qual conta de email receberá uma cópia
//$mail->AddBCC('[email protected]'); // Define qual conta de email receberá uma cópia oculta
// Definição de HTML/codificação
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'utf-8'; // Charset da mensagem (opcional)
// DEFINIÇÃO DA MENSAGEM
$mail->Subject = "Formulário de Contato"; // Assunto da mensagem
$mail->Body .= " Nome: ".$_POST['nome']."
"; // Texto da mensagem
$mail->Body .= " E-mail: ".$_POST['email']."
"; // Texto da mensagem
$mail->Body .= " Assunto: ".$_POST['assunto']."
"; // Texto da mensagem
$mail->Body .= " Mensagem: ".nl2br($_POST['mensagem'])."
"; // Texto da mensagem
// ENVIO DO EMAIL
$enviado = $mail->Send();
// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
// Exibe uma mensagem de resultado do envio (sucesso/erro)
if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.";
echo "Detalhes do erro: " . $mail->ErrorInfo;
}
Tudo certo até aqui! Como colocar o formulário no site?
Crie um novo arquivo e o insira dentro do mesmo diretório onde colocou o arquivo acima o seguinte conteúdo – ou, se preferir, faço o download aqui: Baixar aquivo form.php.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Formulário PHPMailer</title>
<!-- Layout -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<!-- JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br>
<form class="form-horizontal" method="POST" action="envia.php" id="contato" enctype="multipart/form-data">
<fieldset>
<!-- Título do formulário -->
<legend>Formulário PHP - PHPMailer</legend>
<!-- Campo: Nome -->
<div class="form-group">
<label class="col-md-4 control-label" for="nome">Nome</label>
<div class="col-md-4">
<input id="nome" name="nome" placeholder="Informe seu nome" class="form-control input-md" required="" type="text">
</div>
</div>
<!-- Campo: Email -->
<div class="form-group">
<label class="col-md-4 control-label" for="nome">Email</label>
<div class="col-md-4">
<input id="email" name="email" placeholder="Informe seu email" class="form-control input-md" required="" type="text">
</div>
</div>
<!-- Campo: Assunto -->
<div class="form-group">
<label class="col-md-4 control-label" for="nome">Assunto</label>
<div class="col-md-4">
<input id="assunto" name="assunto" placeholder="Informe o assunto da mensagem" class="form-control input-md" required="" type="text">
</div>
</div>
<!-- Campo: Mensagem -->
<div class="form-group">
<label class="col-md-4 control-label" for="mensagem">Mensagem</label>
<div class="col-md-4">
<textarea class="form-control" id="mensagem" name="mensagem"></textarea>
</div>
</div>
<!-- Botão Enviar -->
<center>
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<button type="submit" class="btn btn-inverse">Enviar</button>
</div>
</div>
</fieldset>
</form>
</div>
</body>
</html>
Pronto! Agora você conseguirá enviar emails pelo formulário de contato do seu site de forma autenticada 😀