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.