php

Cómo enviar datos de formulario HTML a un correo electrónico usando PHP

Last updated: 21.02.2026
Views: 98

Enviar un formulario por correo electrónico es una forma importante y habitual de comunicarse con un usuario de un recurso web. Escribamos un formulario simple para enviar datos por correo electrónico utilizando la función PHP mail(). Nuestro formulario también escribirá datos en un archivo en el servidor. El código no está vinculado a ningún CMS y se puede utilizar en cualquier lugar. Es importante que la función mail() esté habilitada en su alojamiento.

<?php 
if(isset($_POST['spam']) && isset($_POST['submit']) && !$_POST['spam']){
 
    //departure date
    $date = date('d-m-Y H:i');
    //the value from the name field is limited to 100 characters
    $field_name = substr(htmlspecialchars(trim($_POST['name'])), 0, 100);
    //the value of the message field is limited to 1000 characters
    $field_message = substr(htmlspecialchars(trim($_POST['message'])), 0, 1000);
 
    $to = "user@example.com"; //to
    $subject = "Data from the feedback form";
    //text of the letter
    $msg = "Name: $field_name
    \nMessage: $field_message";
 
    $headers = 'From: webmaster@example.com'; // from
 
    mail($to, $subject, $msg, $headers);//send the letter
 
    //create a string to write to the file on the server
    $file_msg = "$date Name: $field_name; Message: $field_message;\n";
 
    //write data to file
    file_put_contents(__DIR__ . '/mail.txt', $file_msg, FILE_APPEND); 
 
    echo '<p>Thank you for your message</p>';
}
 
?>
<form method="post" action="">
    <input type="text" name="name" placeholder="Name*" required>
    <textarea name="message" placeholder="Message*" required></textarea>
    <input type="hidden" name="spam" value="">
    <input type="submit" value="Send" name="submit">
</form>

Enviamos un correo a user@example.com. En el valor “from”, es conveniente especificar un buzón de correo del dominio actual. Los datos se escriben en el archivo mail.txt. Los campos del formulario se han establecido como obligatorios mediante el atributo “required”. El campo “spam” proporcionará protección contra los robots de spam, pero mínima. El controlador del formulario se encuentra en la dirección actual. Mostramos un mensaje de agradecimiento después de enviarlo correctamente.

En su implementación, puede guardar los datos en la base de datos en lugar de escribirlos en el archivo. También puede mover el controlador de solicitudes a un archivo separado.

author
Autor: Igor Rybalko
He estado trabajando como desarrollador front-end desde 2014. Mi principal pila tecnológica es Vue.js y WordPress.

Publicaciones similares:

Leave a Reply

Your email address will not be published. Required fields are marked *