Enviar un formulario por mail con PHP
Ejemplo de envío de un formulario por correo electrónico por mediación de la tecnología de servidor PHP.
29/1/03 - El método para enviar un formulario con PHP resulta muy similar al utilizado en ASP. Varía tan sólo la sintaxis utilizada y las líneas de código que realizan el envío del correo electrónico.
Para empezar, sería muy útil que aprendamos a enviar correos electrónicos con PHP, para lo que tenemos un artículo en DesarrolloWeb.
Esquema de funcionamiento
En este caso nos vamos a apoyar en la variable $HTTP_POST_VARS, que debería contener el formulario, para saber si hemos recibido o no datos desde un formulario. Dicha variable la utilizamos en un enunciado if (! $HTTP_POST_VARS), que si pasa por el caso positivo -no había nada en $HTTP_POST_VARS- significa que no se ha recibido nada desde un formulario. En ese caso, muestro el formulario de contacto.
En caso contrario -sí que había algo en $HTTP_POST_VARS- quiere decir que estamos recibiendo datos por un formulario y en ese caso, recogemos los datos y componemos el cuerpo del mensaje.
Veamos el código de la página para crear el formulario, recibirlo y componer el cuerpo del mensaje que se va a enviar. En el mismo código podremos encontrar también la llamada a la función que envía el correo.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mándanos tus comentarios</title>
</head>
<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envia_form_php.php" method=post>
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";
//mando el correo...
mail("admin@tudominio.com","Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>
Seguir navegando a partir aquí:
+ 2 manuales relacionados
+ 1 categoria relacionada
+ 59 comentarios (Añadir)
+ 1 comentario no revisado
| Autoría, licencia y acciones sobre este artículo |
|
Informe de Miguel Angel Alvarez* Director de DesarrolloWeb.com
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
* Para consultas técnicas utilizar la lista de correo.
|
Manuales relacionados con este artículo
Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en
Scripts en PHP
Comentarios de los visitantes
|
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
|
| Se muestran 59 comentarios revisados |
Comentario de Miguel Angel Alvarez
07/3/03
Un visitante me ha mandado una duda:
Me devuelve el siguiente Mensaje.
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Mis web\IGC\pemail.php on line 34
Pues lo que pasa es que tienes que configurar algo en el mensaje o en el php.ini, que es el archivo de configuración de PHP.
Por lo que leo en el error, parece que tienes que definir todavía el campo FROM, que es la dirección de correo del remitente. Lo tendrías que indicar o bien en la configuración del envío de correo, dentro del script PHP, o el remitente por defecto que se puede indicar en el php.ini. Para asegurarte, ponlo en los dos sitios.
Pongo aquí un header completo para el mensaje, que luego le debes de pasar a la función mail().
$headers_mensaje = "From: correo@dominio.com\r\n" . "Reply-To: correo@dominio.com\r\n" . "Return-path: correo@dominio.com\r\n" . "MIME-Version: 1.0\n" . "Content-type: text/plain; charset=iso-8859-1";
Comentario de pablo
11/3/03
¿Se podría haber enviado este formulario a dos correos distintos?
RESPUESTA
PHP permite perfectamente el envío de un correo a dos buzones distintos, así que sólo necesitas configurar convenientemente el envío de correo para que se mande a dos sitios distintos. Hablamos sobre esta y otras configuraciones en el artículo Mandar mails desde PHP.
Comentario de Danilo
10/4/03
Hola ! Estoy comenzando a interpretar el codigo PHP. He comenzado con algo sencillo como es el envio de datos a travez de un formulario. Comprendo perfectamente el funcionamiento del codigo expuesto en esta sección. Solo tengo una duda, el archivo "envia_form_php.php" el cual llama la funcion "action" del formulario, que codigo posee ? O mejor dicho, como lo hago y que codigo tiene que tener ? Espero se entienda mi consulta.
RESPUESTA
Pues tu pregunta se entiende a medias... supongo que lo que te pasa es que no entiendes o no llegas a ver que una página puede llamarse a si misma a través de un formulario.
Todo el código de la página se puede ver en el artículo. La página en si continene un if que es capaz de realizar unas acciones u otras dependiendo de si se reciben o no datos de un formulario. Si no se reciben, se muestra el formulario y si se estaban recibiendo se opera para mandar dicho formulario por mail.
La página se debe llamar "envia_form_php.php".
Comentario de Rockman
22/4/03
a mi me sale:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\apache\htdocs\envia_form_php.php on line 29
RESPUESTA
Tienes mal configurado PHP para que utilize un servidor SMTP o ese servidor está caído. Eso se configura en la instalación de PHP o en el php.ini.
Comentario de Nicolas
26/5/03
Perfecto, buenisimo, Para recomndar.
Ahora lo que no queda muy bien "A mi gusto" es que el usuario de ese formulario quede estancado en el mensaje de que se ha recivido el e-mail, estaría bueno poner una redirección a alguna página del sitio, despues de tantos segundos del mensaje.
se puede hacer eso?, hay que ponerlo dentro de echo?, yo intente con un javaScript pero me tira falla enm la linea N°X.
De todas maneras estoy más que satisfecho con dicho formulario de envio de correo.
Saludos
Comentario de naxly
06/6/03
Pregunta: ¿funciona igual desde el sistema operativo linux?
RESPUESTA
Sí, PHP funciona igual independientemente del sistema operativo que se utilice. En este caso lo que hay que tener es bien configurado PHP en cualquiera de los dos sistemas.
Comentario de Guido
07/6/03
Esto estuvo reweno, y les agradezco que se tomen el tiempo para ayudar a otros; sin embargo (no dejo de ser un neófito) me queda la duda de si para enviar el formulario por mail el visitante tendrá que habilitar su, por ejemplo, outlook express; o si esto me libera de dichos programas.
RESPUESTA
Si envia el correo con el servidor, como en este caso, el vistitante no necesita tener Outlook ni ningún otro programa de correo.
Comentario de Rasco
24/6/03
Como puedo hacer que después de enviar el formulario, se redirija a otra pagina?
RESPUESTA
Pues poniendo al final del script un header("location:http://www.tudireccion.com")
que sirve para crear una redirección a una URL concreta. El header envía información en la cabecera del protocolo http y solo se puede ejecutar si aun no se ha escrito texto en la página.
Comentario de Sergio
05/10/03
Me funciono sin ningun problema pero solo poniendo el codigo que me dio, o sea copiando y pegando...pero al copiar igual el mismo codigo, en una pagina ya prediseñada por mi y ordenando un poco mas los forms, no me funciona, porque?
muy buenos los tutoriales ñ_ñ
RESPUESTA
La verdad es que no puedo saber porqué no te funcionó. Debería verlo, pero lo que está claro es que has hecho algo mal.
Comentario de Gustavo
22/10/03
¿Dónde está el archivo
envia_form_php.php? ¿Es donde debemos colocar el trozo de código que manda el correo?
Respuesta
Disculpad que no haya comentado ese detalle en el artículo. Lo que estás comentando no es exactamente correcto. Me explico:
En realidad sólo hay un archivo y se llama envia_form_php.php. Ese archivo contiene todo el código del ejemplo. El formulario, por decirlo de alguna manera, se llama a si mismo y es suficientemente listo para saber si debe mostrar el formulario o debe mandar el mail.
Comentario de Rodrigo
20/11/03
Miguel:
Utilicé tu script en uno de los sitios que programé y funcionó a la perfección.
Pero al querer usarlo en otros dos sitios me figura un error 405 (HTTP 405 - Resource not allowed
Internet Explorer)
Esto se debe a que el servidor no admite php? (segun ellos si lo hace) Quise usar otro scrip de php y tampoco anduvo.
Desde ya gracias.
Comentario de Luis
23/11/03
Muy buen articulo, necesitaba hacer esto de urgencia y tan solo meti en un buscador las palabras claves y di con este sitio, muy buen trabajo, el unico problema que tube fue en comprender que el archivo debia llamarse asi o en su defecto acmbiar en el codigo para que donde dice archivo.php diga el nombre de tu archivo.
Sigan así.
Comentario de Cristian
03/1/04
La funcion mail() retorna true si se realiza y false si no, bueno a mi me retorna false, tengo windows y he leido que es necesario tener un servidor smtp instalado y otras cosas, pero tu dices que no, en fin, no me funciona y no se que es grax.
Comentario de luis balada
14/1/04
De esta forma se peude mandar al remitente un correo, en el que se reproduce su formulario, y se le da acuse de recibo
//mando el correo...
mail("admin@tudominio.com","Formulario recibido",$cuerpo);
$respuesta ='Recibimos su preticion. Recibirá nuestras noticias' ;
mail(el correo del usuario,"Formulario recibido",$cuerpo . '\n' . $respuesta);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
Comentario de ALEJO
20/2/04
Mira, yo tengo un codigo para subir archivos:
//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "
";
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta.
Se permiten archivos .gif o .jpg se permiten archivos de 100 Kb máximo. |
";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>
Lo que yo quiero, es que, en caso de que el archivo se suba correctamente, se me notifique con un mail en el cual me de:
- Lo que escribieron en el campo de texto
- y el nombre del archivo que subieron:
¿Qué hago?
RESPUESTA
El ejemplo es exactamente igual que el del formulario que hemos relatado en este artículo. Lo único que, en el cuerpo del mensaje debes componer otro texto utilizando las variables que necesitas.
Comentario de Pablo
22/2/04
Mi duda es: si yo lo programo para que funcione en mi maquila ( Instalado PHP apache etc.) y luego lo paso a un servidor pago, en el mismo funcionaria. Ya que no tengo la posibilidad de programar el smtp.
RESPUESTA
Funcionará perfectamente en el servidor donde lo alojes, sin cambiar ningún código.
Es responsabilidad de la empresa que te aloja la página web tener correctamente configurado el sistema para enviar los correos electrónicos con PHP. Así pues, si algo no funciona, te tienen que prestar soporte y configurar el servidor para que funcione.
Comentario de Oso Veloz
16/3/04
Para los que tienen dudas con el "action de formulario", es decir el archivo "envia_form_php.php", pueden reemplazarlo por:
<form action='".$PHP_SELF."' method='post'>
Comentario de Edu
19/3/04
A mi no me funciona, sale el mensaje :"Gracias por rellenar el formulario. Se ha enviado correctamente." pero en mi correo no recibo nada.
RESPUESTA
Lo primero para saber si realmente se ha enviado bien o no ese correo electrónico sería utilizar lo que devuelve la función mail(). Si devuelve true es que se envió el mensaje, en caso contrario, es que no se pudo enviar el mensaje por algún error. El código quedaría algo como esto:
if (mail("admin@tudominio.com","Formulario recibido",$cuerpo))
echo "todo correcto";
else
echo "No se pudo enviar el correo";
Además, puede ocurrir que, aunque PHP envíe el mensaje, tu servidor lo rechace por estar configurado correctamente o enviado a través de un servidor que no corresponde con el dominio de la dirección de correo electrónico. (algunos servidores de correo hacen comprobaciones de este estilo para asegurar que los mensajes no son spam).
Comentario de ToniJ
06/4/04
Existe un pequeño error es este script ( también puede ser debido al servidor ). Para que el formulario se envie de forma correcta o al menos llegue, para pasar de campo en campo has de utilizar "TAB", no el click del ratón. Si utilizas "TAB" el mail llega, de lo contrario, si utilizas para pasar de campo en campo el clik del ratón, no lo hace.
Comentario de Juanito
20/4/04
Yo quería copmentar que quizá haya a quien no le funcione este este codigo al crear su propio formulario php, en mi caso no me funcionaba porque la acción del formulario tenía un nombre distinto al del propio archivo que lo contiene. Es decir que si tu pagina se llama formulario.php en la acción del formulario debes de poner formulario.php
Comentario de Harry Peñaranda
22/4/04
he desarrollado una pagina en php con base de datos, y he logrado enviar reportes correctamente usando la funcoin mail() de php, pero, el problema es que cuando trate de mejorar la presentacion de los reportes agregando codigo html para crear marcos y tablas, el problema es que al abrir el mail recibido, lo que veo es el codigo html y eso no es el resultado deseado... existe alguna forma que el correo tradusca ese codigo html y no mostrarlo como texto simple?
RESPUESTA
En las header del mensaje debes configurar el formato del email (texto plano / HTML).
Por ejemplo, así llegaría en formato HTML:
$headers_mensaje = "From: correo@dominio.com\r\n" . "Reply-To: correo@dominio.com\r\n" . "Return-path: correo@dominio.com\r\n" . "MIME-Version: 1.0\n" . "Content-type: text/html; charset=iso-8859-1";
Comentario de Vinfo
13/7/04
Muy bueno y sencillo el código; pero como se adiciona para enviar el cuerpo del mensaje como un Html, es decir que pueda insertar tags de Html; esto para dar una mejor presentación en el correo que recibe.
Saludos,
Comentario de Joel Márquez
26/7/04
Muy buen Script, 100% configurable, y personalizable, vengo usando ASP desde hace ya 2 años y recien estoy realizando ahora sitios con PHP, y de verdad esta función mail es muy poderosa.
Comentario de Rodris
28/7/04
Ok .. barbaro .. lo copie y pegue .. y funciono perfectamente .. pero cuando le fui a agregar un campo me decia el form se envio correctamente, pero nunca llego a mi mail..
Bueno pero en mi caso fue por que copie el campo nombre y lo pegue, y como esta "nombre" entre comillas no me funcionaba, despues copie y pegue uno de los otros campos y funciono correctamente ... no se si entiende .. pero bueno ... si a aguien le pasa lo mismo escriban nomas que tratare de explicarlo mejor .. pero no pregunten por que, porque no se..
Comentario de Diegolon
07/8/04
Gracias por todo!
Con respecto al funcionamiento del script, ¿no deberia estar encerrado entre comillas los name de email y comment en el formulario?
Chicos sigan con el sitio que esta barbaro.
Comentario de StorM
30/9/04
Estoy muy agradecida con ustedes porque este código funciona correctamente y es muy claro! Que chevere que se distribuya el conocimiento para que sea de dominio de todos. Muchas gracias!
Comentario de lillonix
09/11/04
Saludos
Man, experimenté con el form y funciona, pero es posible validar los campos para evitar que se escriban en ellos cualquier cosa?, además, es posible cambiar el encabezado que llega a la casilla email que dice nobody??
Gracias y saludos,
Lillonix
Comentario de Chuletas
15/12/04
Efectivamente excelentes tutoriales, FELICITACIONES!
Comentario de xchimalli
19/1/05
A mi me resulto muy bien y utilize el codigo en un Servidor Gratuito de Lycos, ya que te permite manejar PHP y MySQL, te inscribes y activas los servicios de PHP y MySQL,subes el index.html ye el archivo envia_form_php.php lo unico que hice fue de la pagina principal crear un hipervinculo hacia la pagina envia_form_php.php y asunto arreglado funciona a la perfeccion... Gracias y espero haber ayudado con esta informacion
Comentario de Omar Hernández
12/2/05
Hola, el formulario funciona perfecto, con el también he podido mandar mails a otros usuarios, el problema que tengo es que al mandar mails al correos de hotmail nomas llegan si los mando como html, no se si el problema esten en lo que le pongo a la funcion mail de php: $headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; .
Con cualquier otro correo funciona perfecto exepto con los de hotmail. !AYUDAAA!
Comentario de Rafhael
24/2/05
Hola, Muy buen tutorial, y mejor el retorno del e-mail al usuario que lo llena, lo unico es que el "from" llega a nombre de "Nobody, nobody@zion.reaktormedia.com" Hay manera de personalizar eso? Gracias!
Comentario de Marcnoman
26/2/05
Warning: mail(): "sendmail_from" not...
Hola, espero poder ayudar a alguien con esta solución al probema:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing
Resulta que en su día, al configurar el php.ini no me fije que en el parametro [mail] la variable mail_from esta comentada i no activada. Así como otras variables de configuración por defecto aparecen activadas esta no ya que esta preparado para windows i Linux.
Solo tienes que quitar el ; que hay en el principio de la variable.
Para aquellos que la variable del php.ini esté activa esta respuesta no les servirá de ayuda.
Comentario de Rafalin
02/3/05
Fantastico script, funciona a la perfección, aunque tuve un problema que se me arregló añadiendo "\r\n" al componer el cuerpo del correo, en vez de "\n". Mi consulta viene porque me interesaría que el correo cuando se abriera por parte del receptor, mandara confirmación de apertura. Gracias
Comentario de CESARCHILE
14/4/05
Me funciono a la perfección. Los felicito.
Por otro lado, quice insertar un campo para adjuntar archivo, revise el correo y me llego el texto, no así el archivo adjunto...Me podrián guiar?
gracias y repito..los felicito
Comentario de Cristian
19/4/05
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";
//from, de quien llega
$cabeceras .= "From: dequienes <tu@email.cl>\r\n";
//mando el correo...
mail("admin@tudominio.com","Formulario recibido",$cuerpo,$cabeceras);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
// espero les sirva ya que personaliza la enviada del correo
tengo mas codigos reacondicionados por mi
info@mientrasbuscaspega.cl
Comentario de thecult
24/4/05
Hola, a todos los que tienen windows98 y les da el siguiente problema:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing
acordaos de quitar el punto y coma de mail_from en php.ini pero no sólo en el php.ini que está dentro de php... ¡acordaos del php.ini que está en el directorio windows!
me ha costado un montón de qubraderos de cabeza, espero que le ayude a alguien
un saludo
Comentario de Cristian
29/4/05
he encontrado un script que permite mandar un formulario con archivo adjunto..si alguien lo necesita gustoso se lo mando, he modificado una parte de el, eso si minimamente, pero funciona super bien, ya lo he probado..no lo pongo aca por que es un poco largo pero no tengo dramas en mandarlo
Comentario de Jose Rafael
15/5/05
Tengo un formulario que esta compuesto por una tabla de 2 columnas y 16 filas. La columna del lado izquierdo contiene las preguntas y la columna del lado derecho contiene el campo para que el usuario responda. Una vez que relleno el formulario y le doy a enviar, me llega perfecto a mi correo. Pero...como hago para que llege a mi correo en una tabla con 2 columnas y 16 filas y no con un simple texto: Gracias !
RESPUESTA
Pues tienes que enviar el mensaje en formato HTML, incluyendo dentro del mensaje el código HTML necesario para que se vean las tablas tal como quieres.
En otro comentario de este artículo ya hemos explicado como modificar las headers del mensaje para que se envíe en formato HTML.
Comentario de Javier
19/5/05
El script funciona correctamente en mi servidor que es linux. Lo unico q me gustaria implementar que una vez enviado no devuelva el mensaje echo() y si me devuelva a la pagina principal.
RESPUESTA
Entonces debes utilizar la función header() de PHP. Un ejemplo sería:
header ("location: http://www.elsitio.com")
La ruta que pones en el location puede ser relativa. Por ejemplo algo como:
header ("location: ../index.php")
Atención: Antes de hacer una llamada a esta función no se debe haber escrito nada en la página.
Comentario de LEONET
23/5/05
Debido a que muchas personas tenemos esta duda, mejor dicho teniamos, porque ya lo descifre, pego el codigo para que este espectacular formulario llegue sin el famoso "nobody" en el campo DE, sino con el correo del que lo lleno, en este pedacito esta el secreto.
$cuerpo .= "Relativo: " . $HTTP_POST_VARS["relativo"] . "\n";
//Este es un ejemplo, es el ultimo campo del formulario que el usuario lleno.
$cabeceras .= "From: $email\r\n";
mail("webmaster@tatati.net","$relativo",$cuerpo,$cabeceras);
Y listo el formulario, como ves es solo agregar la cabecera y luego agregar en "mail" a lo ultimo $cabecera y ya.
Comentario de Enrique David
20/11/05
Hola ¿que tal?. Solo queria deciros que para recibir una confirmación de apertura, tan solo teneis que añadir la siguiente linea a las cabeceras de los correos:
Disposition-Notification-To: correo@electronico.es
SOLO ERA ESTO, saludos.
Comentario de Erick
26/1/06
me parece muy bueno el codigo que pusieron por aqui, me funciona muy bien, corrigiendo algunas cosillas pero nada para espantarse ahora mi duda es si puedo crear algo parecido pero pudiendo agregar un archivo adjunto, soy mas o menos nuevo en esto y he buscado tutoriales sobre lo que busco y no he tenido suerte, espero que aqui puedan sacarme de esta duda, GRACIAS !
Comentario de William
11/2/06
Gracias a Dios que existe desarrolloweb.com este es el script mas facil que e encontrado en la red para enviar formularios por email demasiado de facil de utilizar, copialo, pegalo y listo.Que Dios los sigua iluminando.Gracias
William, de Puerto Rico
Comentario de Sandra Largo Lopez
20/4/06
Estoy muy agradecida por los articulos que publican en este sitio web, hace unos tres años diseño paginas web y estoy iniciando en el desarrollo con php de las mismas y no sabia como recibir los datos de un formulario y enviarlos a un email, hoy he aprendido! Muchisimas gracias a los creadores de este Web Site!
Comentario de Noé
16/5/06
Hola, tengo mi servidor web apache con PHP y copie el codiogo tal y como esta solo modifique el correo a mandar. lo ejecute desde mi navegador y aparecio ke habia enviado el correo pero nunca lo envio a que se debe esto, lei algo asi de un servidor SMTP y ese no lo tengo instlado, ojalá puedan ayudarme GRACIAS
Comentario de Ignacio
29/5/06
Solamente quiero daros las gracias y mi mas sincera enhorabuena un articulo de lo mas sencillo y eficaz Gracias.
Comentario de Bline
11/6/06
El unico GRAN problema sq cuando se te keda al final en la web con el mensaje de enviado, akel que sea listo y kiera joder le dara a f5 hasta saciarse y con ello te hara un flood increible en el buzon. Saludos
Comentario de Alan
06/9/06
muchas gracias.. me sirvio muchisimo esto para entender un poco lo que es php.. y lo que puedo hacer con el.
Comentario de VPM
23/9/06
Hola, para los que tienen el problema con paginas PHP y les da este error
deben revisar en el IIS
Propiedase- Home Directory -configuracion
App Mappings aki se debe revisar si esta agregada la extencion .PHP si no esta agregarla.
Se agrega el archivo PHP.exe que esta en el path donde se instalo PHP
Saludos
espero que les sirva
Comentario de Juan David
27/6/07
No seria mas facil ponerlo asi:
<form action="(nombre).php" method=post>
(Campos del formulario)
</form>
</body>
</html>
Al tener el form action= esta obteniendo el archivo php siguiente:
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado
";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "
";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "
";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "
";
//mando el correo...
mail("admin@tudominio.com","Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
Eso creo
Comentario de pako
28/6/07
por fin he encontrado un formulario que funciona. gracias por el trabajo que realizas y las soluciones que dás a los que estamos comenzando con php.
un saludo.
Comentario de Dani
17/7/07
Es un articulo genial, muy didactico, sencillo y util. Gracias. Muchas Gracias.
Además aprovecho para felicitaros por vuestra excelente labor.
Comentario de Felipe
07/9/07
si alguien llega a tener el mismo problema que yo tuve aqui esta la solucion
http://email.about.com/od/emailprogrammingtips/qt/et073006.htm
Comentario de jose luis
21/9/07
he escrito a mi distribuidor de hosting, y me ha respondido;
Ese método de acceso a variables POST está obsoleto desde hace años.
Por favor consulte la documentación para ver los cambios.
Este enlace puede ayudarle:
http://es.php.net/reserved.variables
a mi pregunta;
vale, me refria al metodo post de html, este archivo especifico
> http://www.xxxxxxxx.com/contacta.php en un servidor xaamp de php en local
> funciona correctamente, pero ese mismo archivo subirlo a mi vps linux que
> esta contratado con vosotros no funciona, este es el metodo de recepcion
> $HTTP_POST_VARS, me podrian ajudar
Comentario de Karen
15/11/07
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Cuando intento enviar un correo me aparece este mensaje, rebice mi php.ini y esta configurado de esta forma:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
por favor diganme que le falta o le sobra!!! :S
Comentario de Cristian Lezcano
14/3/08
Bueno he leido varios comentarios pero ninguno resuelve los errores.. en el error de From .solo corrige. por ahi esta un codigo correcto que utiliza el From.. ahora cuando sale el error Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25... pues teneis q tener instalado en tu compu . un servidor de correos.. eso es todo..Espero haber resuelto sus dudas...
Comentario de dark
21/3/08
Hola,. en cuanto a las personas que no pueden enviar correo porque les da el error de la configuracion de SMTP, deben abrir el archivo php.ini que normalmente esta en la carpeta apache/bin,. en el archivo buscan la configuracion mail function y la modifican. ejemplo. .. (solo para windows...)
[mail function]
; For Win32 only.
SMTP = mail.cantv.net (aqui colocas el smtp que esta en tu outlook)
smtp_port = 25
; For Win32 only.
sendmail_from = yo@cantv.net ( tu correo - el origen )
Comentario de Marcos
06/6/08
Excelente!!!!
He puesto un formulario con este codigo, agregue algunos campos, tambien lo organize un poco con tablas... Y fonciona de maravilla!
Gracias a sitios como estos, estoy ampliando mis conocimientos de PHP; mejor dicho, estoy aprendiendo PHP.
Gracias!
Saludos.
Comentario de beto
08/6/08
ahi una mejora del codigo...
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$remitente = $_REQUEST["email"];
$cuerpo = "Formulario enviado
";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "
";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "
";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "
";
//from, de quien llega
//mando el correo...
mail("sumail@suhost.com","Formulario recibido",$cuerpo, "From: $remitente");
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
y eso que soy diseñador grafico..este codigo es para que le aparesca el mail de quien les manda el mensaje...
| Comentarios sin revisar |
|
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
|
Se ha encontrado un comentario sin revisar
Ir arriba