> Faqs > ¿Qué archivos necesito para mandar un mail en php?

¿Qué archivos necesito para mandar un mail en php?

Hola a todos. Estoy debutando con php y en esta web en particular. Tengo una duda existencial:

Para mandar un mail con PHP, ¿el formulario propiamente dicho tiene que estar en html y luego pasar la información a otro archivo php? o se puede hacer todo en un documento php y embeberlo con html?

y la inversa también: ¿puedo embeber el código php en una pagina html y dejar todo junto o debo hacer 2 documentos separados (html y otro php)?

Sé que tal vez esté enroscado en algo obvio, pero bueno... espero que llegue el día en que le pueda resolver una duda a otro. Muchas gracias. Daniel

Respuestas

Puedes hacerlo tanto de una manera como otra. Es decir, puedes tener un formulario en HTML y enviar los datos a una página PHP. O tener una única página PHP que muestra el formulario y que luego recibe los datos enviados.

¿Qué se suele hacer? Creo que por practicidad y por ordenar tu código, es mejor tener un único archivo que haga las dos cosas, así te resultará más fácil de mantener.

En este caso simplemente tienes que preguntar en la página si estás o no recibiendo datos de POST.

<html>
    <head>Enviar email</head>
    <body>
        <?php
        if(! $_POST) {
            // No se están enviado datos por post, entonces muestro el formulario
        ?>
            <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
                Aquí tus campos de formulario
            </form>
        <?php
        } else {
            // Es que están recibiendo datos de formulario
            // Entonces compongo el email
            // Usarás los datos que te vienen en $_POST para componer el email
        }
        ?>
    </body>
</html>

Esto sería un código sencillo de cómo podrías hacerlo. Sin embargo, esta alternativa también tendría una complejidad, que básicamente consiste en que embeber código HTML y código PHP es una práctica no muy buena.

Generalmente lo aconsejado es que el código PHP no se mezcle con el código HTML, para mejorar la mantenibilidad, ya que cada capa de aplicación debería estar separada. La sugerencia aquí sería que usases un sistema de templates en PHP para que el código del formulario y el HTML estuviera separado. Una sugerencia de sistema de templates es Plates.

Norberto
223 5 19 15

En la pagina donde esta el formulario coloca este codigo despues del head asi :

<?php 
if (!$_POST){ 
?> 

Y luego por ultimo, después del </form> y antes del </body>, pon esto:

</form> 
<?php 
} else { 
    $para = "xxxx@tudominio.com.com";
    $asunto = $_POST["title"]; 
    $mailheader = "MIME-Version: 1.0 "; 
    $mailheader = "From: ".$_POST["email"]." "; 
    $mailheader .= "Reply-To: ".$_POST["email"]." "; 
    $mailheader .= "Content-type: text/html; charset=iso-8859-1 "; 
    $MESSAGE_BODY .= "NAME: ".$_POST["name"]."<br>"; 
    $MESSAGE_BODY .= "TITLE: ".$_POST["title"]."<br>"; 
    $MESSAGE_BODY .= "COMPANY: ".$_POST["company"]."<br>"; 
    mail($para, $asunto, $MESSAGE_BODY, $mailheader) or die ("Error al enviar el Formulario !"); 
} ?> </body> 

Lo que hace esto posible es la sintaxis $_POST eso es todo averiguen mas sobre esto ultimo.

Nicolas