Skip to content

Exemplo de formulário HTML para envio de e-mails utilizando a biblioteca PHPMailer com suporte para anexar qualquer tipo de arquivo e ao após o envio redirecionar o usuário para uma nova página personalizada (página de obrigado, por exemplo).

Notifications You must be signed in to change notification settings

matheuscostadesign/phpmailer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

phpmailer-locaweb

  • Exemplo de formulário HTML para envio de e-mails utilizando a biblioteca PHPMailer com suporte para:

    • Pegar qualquer tipo de input (Nome, e-mail, telefone, etc);
    • Anexar arquivos;
    • Redirecionar para uma página personalizada (página de obrigado, por exemplo, após o envio);
    • Possibilidade de utilizar template de um arquivo HTML externo;
  • Essa forma funcionou corretamente em uma hospedagem da Locaweb e também em um ambiente de teste na rede local utilizando o servidor XAMPP;

HTML

<form action="enviar.php" method="post" enctype="multipart/form-data">
  <h1>Exemplo Formulário</h1>
  <p>Enviar formulário por e-mail com a biblioteca PHPMailer</p>
  <input type="text" name="nome" placeholder="Nome" />
  <input type="text" name="telefone" placeholder="Telefone" />
  <input type="email" name="email" placeholder="E-mail" />
  <label for="arquivo">Anexe um arquivo</label>
  <input type="file" name="arquivo" />
  <textarea name="mensagem" cols="45" rows="5" placeholder="Digite a mensagem..."></textarea>
  <button type="submit" class="button">Enviar mensagem</button>
</form>

Arquivo enviar.php

  • OBS: Corpo da mensagem SEM template HTML externo
<?php

require 'PHPMailer/PHPMailerAutoload.php';
require 'PHPMailer/class.phpmailer.php';

// Criação da instância
$mailer = new PHPMailer;

// Pegando os campos do formulário
$nome = $_POST['nome'];
$telefone = $_POST['telefone'];
$email = $_POST['email'];
$arquivo = $_FILES["arquivo"];
$mensagem = $_POST['mensagem'];

// Configuração SMTP
$mailer->isSMTP();
$mailer->SMTPAuth = true;
$mailer->Host = 'smtp.dominio.com.br';
$mailer->Port = 587;
$mailer->Username = '[email protected]';
$mailer->Password = 'Senha';
$mailer->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

// Configuração remetente
$mailer->From = '[email protected]';
$mailer->FromName = 'Nome Completo';
$mailer->Subject = 'Assunto da Mensagem';

// Configuração destinatários
$mailer->addAddress('[email protected]');
$mailer->addAddress('[email protected]');
$mailer->addCC('[email protected]');

// Anexos
$mailer->AddAttachment($arquivo['tmp_name'], $arquivo['name']);

// Corpo da mensagem
$mailer->CharSet = 'UTF-8';
$mailer->isHTML(true);

// Corpo da mensagem sem template HTML externo
$corpoMSG = "<strong>Nome:</strong> $nome<br>
<strong>Telefone:</strong> $telefone<br>
<strong>E-mail:</strong> $email<br>
<strong>Anexo:</strong> {$arquivo['name']}<br>
<strong>Mensagem:</strong> $mensagem<br>";

$mailer->MsgHTML($corpoMSG);

//$mailer->SMTPDebug = 2; // Habilitar log de erros

if (!$mailer->Send()) {
    echo "Erro ao enviar: " . $mailer->ErrorInfo;
} else {
    header('Location: obrigado.html'); // Redirecionamento p/ página obrigado
    exit;
}

Arquivo enviar.php

  • OBS: Corpo da mensagem COM template HTML externo
<?php

require 'PHPMailer/PHPMailerAutoload.php';
require 'PHPMailer/class.phpmailer.php';

// Criação da instância
$mailer = new PHPMailer;

// Pegando os campos do formulário
$nome = $_POST['nome'];
$telefone = $_POST['telefone'];
$email = $_POST['email'];
$arquivo = $_FILES["arquivo"];
$mensagem = $_POST['mensagem'];

// Configuração SMTP
$mailer->isSMTP();
$mailer->SMTPAuth = true;
$mailer->Host = 'smtp.dominio.com.br';
$mailer->Port = 587;
$mailer->Username = '[email protected]';
$mailer->Password = 'Senha';
$mailer->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

// Configuração remetente
$mailer->From = '[email protected]';
$mailer->FromName = 'Nome Completo';
$mailer->Subject = 'Assunto da Mensagem';

// Configuração destinatários
$mailer->addAddress('[email protected]');
$mailer->addAddress('[email protected]');
$mailer->addCC('[email protected]');

// Anexos
$mailer->AddAttachment($arquivo['tmp_name'], $arquivo['name']);

// Corpo da mensagem
$mailer->CharSet = 'UTF-8';
$mailer->isHTML(true);

// Corpo da mensagem com template HTML externo
$corpoMSG = file_get_contents(dirname(__FILE__) . '/email-templates/template1.html');
$corpoMSG = str_replace('{template_nome}', $nome, $corpoMSG);
$corpoMSG = str_replace('{template_telefone}', $telefone, $corpoMSG);
$corpoMSG = str_replace('{template_email}', $email, $corpoMSG);
$corpoMSG = str_replace('{template_arquivo}', $arquivo['name'], $corpoMSG);
$corpoMSG = str_replace('{template_mensagem}', $mensagem, $corpoMSG);

$mailer->MsgHTML($corpoMSG);

//$mailer->SMTPDebug = 2; // Habilitar log de erros

if (!$mailer->Send()) {
    echo "Erro ao enviar: " . $mailer->ErrorInfo;
} else {
    header('Location: obrigado.html'); // Redirecionamento p/ página obrigado
    exit;
}

About

Exemplo de formulário HTML para envio de e-mails utilizando a biblioteca PHPMailer com suporte para anexar qualquer tipo de arquivo e ao após o envio redirecionar o usuário para uma nova página personalizada (página de obrigado, por exemplo).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published