Cómo Crear un Formulario de Contacto con Envío de Correo Autenticado en PHP

Si necesitás un formulario de contacto que envíe correos autenticados usando SMTP, podés hacerlo con HTML, PHP y PHPMailer.

1️⃣ Requisitos

  • Un servidor con PHP.
  • PHPMailer instalado (si usás Composer, instalalo con: composer require phpmailer/phpmailer).
  • Una cuenta de correo SMTP (Gmail, Outlook, etc.).

2️⃣ Formulario en HTML

Crea un archivo index.html con este código:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Contacto</title>
</head>
<body>
    <h2>Contacto</h2>
    <form action="enviar.php" method="POST">
        <label>Nombre:</label>
        <input type="text" name="nombre" required><br><br>

        <label>Email:</label>
        <input type="email" name="email" required><br><br>

        <label>Mensaje:</label>
        <textarea name="mensaje" required></textarea><br><br>

        <button type="submit">Enviar</button>
    </form>
</body>
</html>

3️⃣ Código PHP para Enviar el Correo

Crea un archivo enviar.php con el siguiente código:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php'; // PHPMailer debe estar instalado

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nombre = htmlspecialchars($_POST["nombre"]);
    $email = htmlspecialchars($_POST["email"]);
    $mensaje = htmlspecialchars($_POST["mensaje"]);

    $mail = new PHPMailer(true);

    try {
        // Configuración del servidor SMTP
        $mail->isSMTP();
        $mail->Host = 'smtp.tudominio.com';  // Servidor SMTP
        $mail->SMTPAuth = true;
        $mail->Username = 'tuemail@tudominio.com';  // Email del remitente
        $mail->Password = 'tucontraseña';  // Contraseña del remitente
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // o SSL
        $mail->Port = 587; // 465 para SSL, 587 para TLS

        // Configuración del correo
        $mail->setFrom('tuemail@tudominio.com', 'Tu Nombre');
        $mail->addAddress('destinatario@ejemplo.com', 'Destinatario');
        $mail->Subject = 'Nuevo mensaje de contacto';
        $mail->Body = "Nombre: $nombre\nEmail: $email\nMensaje:\n$mensaje";

        $mail->send();
        echo "Mensaje enviado con éxito.";
    } catch (Exception $e) {
        echo "Error al enviar el mensaje: {$mail->ErrorInfo}";
    }
}
?>

🔒 Consejos de Seguridad

  • No guardes contraseñas en el código. Usá variables de entorno.
  • Para Gmail: Habilitá «Aplicaciones menos seguras» o usá una contraseña de aplicación.
  • Usá TLS o SSL para una conexión segura.

Con este código, tu formulario podrá enviar correos autenticados de manera segura y confiable. 🚀