Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: URKA84 en 25 de Junio 2015, 14:05

Título: Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 25 de Junio 2015, 14:05
Hola Hola

Quiero hacer un formulario en php cuyo contenido se envíe directamente a mi correo electrónico.

He intentado hacerlo por mi cuenta pero al no tener ni idea copié un código de un tutorial... tenía buena pinta.

Pero claro... no funcionó, no me llega el mail a mi bandeja.

También he leído acerca de la creación de un formulario del tipo que yo deseo, pero es que no me queda claro los recursos previos que necesito (correo en el servidor, etc.).

Ya sé que es un palo que venga de vez en cuando a preguntar tonterías, pero... se agradecen las respuestas.

Gracias.


FORMULARIO:

Código: [Seleccionar]
<form name="frmContacto" method="post" action="sendbymail.php">
<table width="500px">
<tr>
<td>
<label for="first_name">Nombre: *</label>
</td>
<td>
<input type="text" name="first_name" maxlength="50" size="25">
</td>
</tr>
<tr>
<td valign="top"">
<label for="last_name">Apellido: *</label>
</td>
<td>
<input type="text" name="last_name" maxlength="50" size="25">
</td>
</tr>
<tr>
<td>
<label for="email">Dirección de E-mail: *</label>
</td>
<td>
<input type="text" name="email" maxlength="80" size="35">
</td>
</tr>
<tr>
<td>
<label for="telephone">Número de teléfono:</label>
</td>
<td>
<input type="text" name="telephone" maxlength="25" size="15">
</td>
</tr>
<tr>
<td>
<label for="comments">Comentarios: *</label>
</td>
<td>
<textarea name="comments" maxlength="500" cols="30" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<input type="submit" value="Enviar">
</td>
</tr>
</table>
</form>


SCRIPT:

Código: [Seleccionar]
<?php
if(isset($_POST['email'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to "destinatario@sudominio.com";
$email_subject "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['first_name']) ||
!isset(
$_POST['last_name']) ||
!isset(
$_POST['email']) ||
!isset(
$_POST['telephone']) ||
!isset(
$_POST['comments'])) {

echo 
"<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo 
"Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " $_POST['first_name'] . "\n";
$email_message .= "Apellido: " $_POST['last_name'] . "\n";
$email_message .= "E-mail: " $_POST['email'] . "\n";
$email_message .= "Teléfono: " $_POST['telephone'] . "\n";
$email_message .= "Comentarios: " $_POST['comments'] . "\n\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' phpversion();
@
mail($email_to$email_subject$email_message$headers);

echo 
"¡El formulario se ha enviado con éxito!";
}
?>
Título: Re:enviar e-mail desde formulario php
Publicado por: Alex Rodríguez en 25 de Junio 2015, 21:54
ola urka, no es ninguna molestia que preguntes lo que quieras, para eso están los foros. Ahora bien, sería de agradecer que además de preguntar respondas también a personas que hagan preguntas, así colaboras. Puedes pensar que quizás no tengas conocimientos suficientes para responder, pero piensa que siempre hay gente con menos conocimientos que tú y que aquí estamos todos para ayudar y aprender, no se pide a nadie que sea un experto para responder en los foros.

En cuanto a la pregunta, lo primero que tienes que tener en cuenta es dónde incluir el envío del formulario. Como tu formulario envía a sendbymail.php es en ese archivo donde debes incluir el envío del correo electrónico (además lo normal sería que dentro de ese archivo incluyas un mensaje de confirmación de envío del formulario).

Lo primero que debes probar es que tu servidor ejecute la función mail correctamente. Hay algunos servidores que tienen establecidas restricciones sobre esta función. Para probarla basta que en el archivo de destino del formulario incluyas un código como este:

Código: [Seleccionar]
<?php
echo 'Enviando correo';
mail("elcorreodedestino@gmail.com","Aqui el asunto del correo""Hola esto es un correo de prueba");
?>

Si esto no te funciona tienes que solucionar esto antes que nada.

El código que has puesto habría que revisarlo con calma, puede que el error lo tengas en esta línea:

@mail($email_to, $email_subject, $email_message, $headers);

Esa @ que aparece al principio puede estar generando el error.

Saludos
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 01 de Julio 2015, 12:55
Hola, gracias por responder.

1- En primer lugar decirte que después de haber visto varios códigos me lié un poco... y no los había probado de forma adecuada.

Ahora sí lo he hecho y aún así no me funciona, pero lo revisaré bien.

2- Segundo, he modificado el código siguiendo tus consejos, pero sigo sin recibir el correo en mi bandeja, pero como dije antes seguiré probando.

3- Gracias por animarme a colaborar con los novatos, de vez en cuando echo un vistazo al foro a ver si puedo ser de ayuda.
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 01 de Julio 2015, 12:59
Hola.

He probado a escribir en un archivo "prueba formulario 1.php" el siguiente código:

Código: [Seleccionar]
<?php
echo 'Enviando correo';
mail("elcorreodedestino@gmail.com","Aqui el asunto del correo""Hola esto es un correo de prueba");
?>

No me llega ningún e-mail, así que supongo que el servidor de 000webhost no me lo permite.

Saludos.
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: Alex Rodríguez en 01 de Julio 2015, 13:08
Hola, en el nombre de archivo no debe haber espacios.

prueba formulario 1.php no es un nombre válido, en cambio prueba_formulario_1.php sí es un nombre válido.

Además en la dirección de destino hay que poner un correo electrónico válido, en caso contrario no llegará a ningún lado. También hay que comprobar la carpeta de spam porque puede que el correo se vaya a la carpeta de spam.

Yo he probado tanto el código anterior como este que te pongo a continuación y ambos me han funcionado (escribiendo datos reales de correos):

Código: [Seleccionar]
<?php
echo 'Enviando correo';
$to "aquiuncorreo@aprenderaprogramar.com";
$subject "Correo en prueba";
$txt "Hola es un placer saludar desde el correo en pruebas!";
$headers "From: aquiotrocorreo@ejemplo.com" "\r\n" .
"CC: yaquiotrocorreocomocc@aprenderaprogramar.com";
mail($to,$subject,$txt,$headers);
?>

Saludos
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 03 de Julio 2015, 07:43
Hola otra vez.

He probado el código de Alex Rodríguez, cambiando el e-mail por el mío personal, pero no me llega nada... ya he esperado bastante.

¿Será que 000webhost no me lo permite?
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 03 de Julio 2015, 08:21
Bueno bueno bueno... ahora me ha llegado el correo de prueba usando el código de Alex.

Me ha llegado sólo a gmail, supongo que hotmail no permite la llegada de estos correos.
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: César Krall en 03 de Julio 2015, 15:21
Hola, lo más probable es que en hotmail lo tengas en la carpeta de spam. Saludos.
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 04 de Julio 2015, 19:23
Hola, lo más probable es que en hotmail lo tengas en la carpeta de spam. Saludos.

Que va, ni siquiera eso. -_-
Título: Re:Enviar e-mail desde formulario php con el contenido del formulario
Publicado por: URKA84 en 04 de Julio 2015, 19:24
Se me había olvidado:

Gracias por vuestras respuestas. Me han sido muy útiles.