Um formulário de contacto permite que os utilizadores enviem mensagens diretamente do seu site. Para isso, vamos precisar de dois ficheiros a trabalhar em conjunto:
- formulario.html: A página com os campos para o utilizador preencher (nome, e-mail, mensagem).
- processar-formulario.php: O script PHP que recebe os dados do formulário e usa o PHPMailer para os enviar para o seu e-mail.
Ambos os ficheiros devem ser criados na pasta public_html, ao lado da pasta PHPMailer-master.
O envio autenticado e a instalação do PHPMailer podem ser verificadas no artigo https://kb.dominios.pt/article/como-enviar-emails-autenticados-com-phpmailer .
Passo 1: Criar a Página do Formulário (formulario.html)
Crie um novo ficheiro chamado formulario.html na sua pasta public_html e cole o seguinte código:
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulário de Contacto</title>
<style>
body { font-family: sans-serif; line-height: 1.6; max-width: 600px; margin: 20px auto; padding: 20px; }
h1 { color: #333; }
label { display: block; margin-top: 15px; font-weight: bold; }
input[type="text"], input[type="email"], textarea { width: 100%; padding: 10px; margin-top: 5px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
button { background-color: #2a639b; color: white; padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; margin-top: 20px; }
button:hover { background-color: #1e4a78; }
</style>
</head>
<body>
<h1>Contacto</h1>
<p>Envie-nos uma mensagem preenchendo o formulário abaixo.</p>
<!-- O atributo 'action' aponta para o nosso script PHP -->
<form action="processar-formulario.php" method="post">
<label for="nome">O seu Nome:</label>
<input type="text" id="nome" name="nome" required>
<label for="email">O seu E-mail (para respondermos):</label>
<input type="email" id="email" name="email" required>
<label for="assunto">Assunto:</label>
<input type="text" id="assunto" name="assunto" required>
<label for="mensagem">Mensagem:</label>
<textarea id="mensagem" name="mensagem" rows="6" required></textarea>
<button type="submit">Enviar Mensagem</button>
</form>
</body>
</html>
Passo 2: Criar o Script de Processamento (processar-formulario.php)
De seguida, crie o ficheiro processar-formulario.php. Este script é uma versão modificada do anterior: em vez de ter dados fixos, vai buscar a informação que o utilizador preencheu no formulário.
Copie o código abaixo para o seu ficheiro processar-formulario.php:
<?php
// Usa as classes da biblioteca PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
// Carrega os ficheiros da biblioteca
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
// Verifica se o formulário foi submetido
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Recupera os dados do formulário
$nome = htmlspecialchars($_POST['nome']);
$email_visitante = htmlspecialchars($_POST['email']);
$assunto = htmlspecialchars($_POST['assunto']);
$mensagem = htmlspecialchars($_POST['mensagem']);
$mail = new PHPMailer(true);
try {
// ----------------- CONFIGURAÇÕES DO SERVIDOR SMTP (ALTERE COM OS SEUS DADOS) -----------------
$mail->isSMTP();
$mail->Host = 'mail.seudominio.com'; // <<< ALTERE AQUI
$mail->SMTPAuth = true;
$mail->Username = 'seu_email@seudominio.com'; // <<< ALTERE AQUI: O e-mail que vai enviar a mensagem
$mail->Password = 'sua_senha_do_email'; // <<< ALTERE AQUI
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465; // <<< ALTERE AQUI
$mail->CharSet = 'UTF-8';
// ----------------- REMETENTE E DESTINATÁRIOS -----------------
$mail->setFrom('seu_email@seudominio.com', 'Formulário do Site'); // O e-mail que envia (deve ser o mesmo do Username)
$mail->addAddress('seu_email@seudominio.com', 'O Meu Nome'); // <<< ALTERE AQUI: O e-mail que vai RECEBER a mensagem
$mail->addReplyTo($email_visitante, $nome); // Adiciona o e-mail do visitante como "Responder Para"
// ----------------- CONTEÚDO DO E-MAIL -----------------
$mail->isHTML(true);
$mail->Subject = 'Nova mensagem do formulário: ' . $assunto;
// Corpo do e-mail formatado
$mail->Body = "Recebeu uma nova mensagem do seu formulário de contacto.<br><br>" .
"<b>Nome:</b> " . $nome . "<br>" .
"<b>E-mail:</b> " . $email_visitante . "<br>" .
"<b>Assunto:</b> " . $assunto . "<br>" .
"<b>Mensagem:</b><br>" . nl2br($mensagem);
$mail->AltBody = "Recebeu uma nova mensagem.\n\n" .
"Nome: " . $nome . "\n" .
"E-mail: " . $email_visitante . "\n" .
"Assunto: " . $assunto . "\n" .
"Mensagem:\n" . $mensagem;
$mail->send();
echo '<h1>Mensagem Enviada!</h1><p>Obrigado pelo seu contacto. Responderemos em breve.</p><a href="formulario.html">Voltar</a>';
} catch (Exception $e) {
echo "<h1>Erro!</h1><p>A sua mensagem não pôde ser enviada. Por favor, tente novamente mais tarde.</p>";
// echo "Erro detalhado: {$mail->ErrorInfo}"; // Descomente para depuração
}
} else {
echo "Acesso inválido.";
}
?>
Passo 3: Testar o Formulário
Está tudo pronto! Para testar, aceda à página do formulário no seu browser:
http://seudominio.com/formulario.html
Preencha os campos e clique em “Enviar Mensagem”. Irá surgir a mensagem de sucesso e receberá um e-mail com os dados que preencheu.