jueves, 27 de noviembre de 2014

Como enviar un mail con PHP (III) un mail con formato

Ya hemos aprendido como enviar mails simples y con cabeceras, pero ahora es el momento de aprender a enviar un mail con formato en PHP para que quede más atractivo.

En el siguiente script, no hemos usado ningún tipo de CSS, tan solo HTML5 a pelo para crear una tabla, pero una vez que tenemos esto hecho tan solo se trata de dar estilo de forma normal a nuestro código.

Pare empezar vamos a presentar un formulario HTML5 al cliente, en este caso he querido que todos los campos sean obligatorios, evitando de este modo el control de si han sido rellenados o no en el back-end, pero si quieres saber como se hace puedes verlo en como enviar un mail con cabeceras.
<html>
<head>
 <title>
  Envío de correo electrónico
 </title>
</head>
<body>
 <h1>Envío de correo electrónico</h1>
 <br>
 <form method="post" action="formato.php">
  Escriba sus comentarios y haga clic en Enviar:
  <p>Nombre: <input type="text" name="nombre" required></p>
  <p>email: <input type="email" name="email" required></p>
  <p>Asunto: <input type="text" name="asunto" required></p>
   
  <textarea name="message" cols="50" rows="5" required></textarea>
  <input type="submit" value="Enviar">
 </form>
<body>
</html>

En este formulario como ya he comentado, se utiliza el atributo required, de hecho se pueden utilizar validaciones si se desea, pero no tiene ningún misterio, la magia se da en nuestro script en php:
<?php
 $cabeceras = "MIME-Version: 1.0\r\n";
 $cabeceras .= "Content-Type: text/html; charset=UTF-8\r\n";
 $correo = '<table border="1px">
        <caption><h2>Nuevo email</h2></caption>
        <tr>
            <td><b>Nombre</b></td>
            <td>' . $_REQUEST["nombre"] . '</td>
        </tr>
        <tr>
            <td><b>Email</b></td>
            <td>' . $_REQUEST["email"] . '</td>
        </tr>
        <tr>
            <td><b>Asunto</b></td>
            <td>' . $_REQUEST["asunto"] . '</td>
        </tr>
        <tr>
            <td><b>Mensaje</b></td>
            <td>' . $_REQUEST["message"] . '</td>
        </tr>
    </table>';


 mail("direccionEmail", $_REQUEST["asunto"], $correo, $cabeceras);
?>

Lo primero que tenemos que hacer es crear las cabeceras, sin las cuales nuestro formato no aparecerá en el correo, ya que estas indican que interpreten el código HTML que hay dentro.

A continuación creamos el string $correo que es el cuerpo del correo en sí mismo, aquí hemos escogido una tabla, pero puede ser una lista o lo que queramos.

Hay que notar como recogemos los datos del formulario para que aparezcan en la tabla en la posición que queremos.
Debido a que es un script que solo envía el mail, no hace falta guardar estos datos introducidos por el usuario en variables, ya que solo van a enviarse al mail, aparte de que se están guardando en la tabla.

Finalmente terminamos utilizando la función mail() como de costumbre que tiene como primer parametro la dirección de mail donde va dirigido el correo, el asunto del mail, el mensaje (en nuestro caso la tabla), y las cabeceras.

Con todo esto obtenemos un resultado similar a este:

No hay comentarios:

Publicar un comentario