Como criar um formulário usando o PHPMAILER

O que é o PHPMailer?

Basicamente é uma classe do PHP que possui funções mais avançadas, que faz a autenticação do usuário/senha do SMTP no servidor e garante que aquele e-mail está sendo realmente enviado pela conta autenticada. Por segurança, a antiga função mail() já não funciona há alguns anos.

Atenção

Boa parte deste artigo foi suprimida por ser antiga. O ideal é sempre seguir a orientação oficial do projeto, que pode ser acompanhada diretamente em https://github.com/PHPMailer/PHPMailer

Sendo assim, as partes a seguir devem ser utilizadas apenas como referência.

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 enviar.php. O arquivo deve conter o código abaixo e 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 = ‘conta-de-email@seudominio.com.br’: 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 = “conta-de-email@seudominio.com.br”: Conta que fará o envio das mensagens (deve ser uma conta existente e ativa no seu domínio)
Linha 23 – $mail->AddAddress(‘recebe1@dominio.com.br’): 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 auterar conforme o seu domínio!
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "mail.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 = false; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"
$mail->Username = 'conta-de-email@seudominio.com.br'; // Conta de email existente e ativa em seu domínio
$mail->Password = '********'; // Senha da sua conta de email

// DADOS DO REMETENTE
$mail->Sender = "conta-de-email@seudominio.com.br"; // Conta de email existente e ativa em seu domínio
$mail->From = "conta-de-email@seudominio.com.br"; // 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('recebe1@dominio.com.br', 'Nome - Recebe1'); // Define qual conta de email receberá a mensagem
//$mail->AddAddress('recebe2@dominio.com.br'); // Define qual conta de email receberá a mensagem
//$mail->AddCC('copia@dominio.net'); // Define qual conta de email receberá uma cópia
//$mail->AddBCC('copiaoculta@dominio.info'); // 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']."<br>"; // Texto da mensagem
$mail->Body .= " E-mail: ".$_POST['email']."<br>"; // Texto da mensagem
$mail->Body .= " Assunto: ".$_POST['assunto']."<br>"; // Texto da mensagem
$mail->Body .= " Mensagem: ".nl2br($_POST['mensagem'])."<br>"; // 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 "<b>Detalhes do erro:</b> " . $mail->ErrorInfo;
}

Exemplo de formulário para o site

<!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 doformulá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ãoEnviar-->
<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>
Atualizado em 30/04/2022
  • 4 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

O módulo magic_quotes do PHP está habilitado?

Não. Desde a versão 5.3 do PHP, o magic_quotes_gpc não é indicado e nem colocado como "on" por...

Quais os caminhos (paths) do Perl? O que é erro 500 em scripts Perl?

Caminhos para as aplicações de servidores Linux/cPanel: perl: /usr/bin/perl date: /bin/date...

Erro PHP: "Cannot modify header information"

O erro "Cannot modify header information" ocorre quando um script tem alguma saída HTML antes da...

Redirecionar http:// para https://

Para efetuar o redirecionamento automático de "http://" para uma "https://" (página segura),...