sábado, 28 de julio de 2012

Función Mail()

Enviar correo con un formulario desde PHP

Respondiendo a la inquietud que presentaron en clase mis estudiantes en clase les dejo un pequeño escript que les permitirá enviar información que capturen en un formulario html hacia un correo electrónico (hotmail o gmail).

Para comenzar el script es un php, pero lo trabajaremos de la siguiente manera:

Escribimos el código dentro las etiquetas <body> y </body>.  En este caso iniciamos con la creación de una tabla (la tabla aportará orden a nuestro formulario).
 
<body>
<table width="100%" height="100%" border="0" align="center" cellspacing="0">
  <tr>
    <td>



Luego iniciamos con la etiqueta <form> y la configuramos de la siguiente manera:

    <form action="<? $HTTP_POST_VARS ?>" method="post">


Ahora iniciamos php, este código evaluará si el formulario contiene o no datos, en caso que no contenga mostrará el formulario.

    <?
            if (!$HTTP_POST_VARS){
        ?>


Escribimos el formulario dentro de otra tabla para que se vea más bonito:

        <h1 align="center" class="titulo1">Envíenos un correo</h1>
      <table width="542" border="0" align="center">
      <tr>
        <th width="480" class="Estilo20" scope="row">
            <div align="right">
              Nombre:
              <input name="nombre" type="text" size="40" />
              <br />
              Email:
              <input name="email" type="text" size="40" />
              <br />
              Asunto:
              <input name="asunto" type="text" size="40" />
              <br />
              Comentarios:
              <textarea name="comentario" cols="40" rows="10"></textarea>
              <br />
              <input name="submit" type="submit" value="Enviar correo" />
            </div>
        </form>
        <div align="center" class="Estilo2"><br />
Los comentarios enviados serán recibidos directamente en mi correo y te responderé en cuanto pueda.</div>



Después del formulario volvemos a abrir php y en este espacio contruimos el cuerpo del correo electrónico usando los datos del formulario:

        <?
            }
            else {
            //Estoy recibiendo el formulario, compongo el cuerpo
            $cuerpo = "
Correo enviado desde mi sitio web\n";
            $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
            $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
            $cuerpo .= "Asunto: " . $HTTP_POST_VARS["asunto"] . "\n";
            $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["comentario"] . "\n";
        


Por ultimo envío el correo doy las gracias y cierro todas las etiquetas que antes había abierto:

            mail("limacruzjuancarlos@hotmail.com","Formulario recibido desde mi sitio web",$cuerpo);
            echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
        }
        ?>

        </th>
  </tr>
</table>
    </td>
  </tr>
</table>
</body>


Bien eso es todo, solamente debo aclarar que la función mail() funcionará unicamente en un servidor en línea y no en una de prueba.  Como siempre les dejo el código completo para que lo prueben y lo mejoren.

<body>
<table width="100%" height="100%" border="0" align="center" cellspacing="0">
  <tr>
    <td>
    <form action="<? $HTTP_POST_VARS ?>" method="post">
    <?
            if (!$HTTP_POST_VARS){
    ?>
     <h1 align="center" class="titulo1">Envíenos un correo</h1>
     <table width="542" border="0" align="center">
     <tr>
        <th width="480" class="Estilo20" scope="row">

            <form action="libro_vis2.php" method="post">
            <div align="right">
              Nombre:<input name="nombre" type="text" size="40" />
              <br />
              Email: <input name="email" type="text" size="40" />
              <br />
              Asunto:<input name="asunto" type="text" size="40" />
              <br />
              Comentarios:<textarea name="comentario" cols="40" rows="10"></textarea>
              <br />
              <input name="submit" type="submit" value="Enviar correo" />
            </div>
        </form>
        <div align="center" class="Estilo2"><br />
Los comentarios enviados serán recibidos directamente en mi correo y te responderé en cuanto pueda.</div>
        <?
            }
            else {
            //Estoy recibiendo el formulario, compongo el cuerpo
            $cuerpo = "Correo enviado desde mi sitio web\n";
            $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
            $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
            $cuerpo .= "Asunto: " . $HTTP_POST_VARS["asunto"] . "\n";
            $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["comentario"] . "\n";
       
            //mando el correo...
            mail("limacruzjuancarlos@hotmail.com","Formulario recibido desde mi sitio web",$cuerpo);
       
            //doy las gracias por el envío
            echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
        }
        ?>

        </th>
  </tr>
</table>
    </td>
  </tr>
</table>
</body>


Aquí un ejemplo del formulario, envíame un comentario.