Versión Completa : Enviar e-mail con PHP
ZilverDrag-On
agosto 30, 2005, 01:48
Que tal LANeros y LANeras. Tengo un problema con un script en PHP que necesito para enviar una informacion recogida con un formulario a un correo electronico. La verdad no se mucho acerca de PHP pero entiendo alguito.
El formulario esta enlazado al script por medio del metodo post y tiene los campos from (correo del remitente), name (nombre del remitente), comments (comentarios del remitente).
El scrip es el siguiente:
<HTML>
<HEAD></HEAD>
<BODY>
<?php
$remitente = "De: ".$from;
$para = "correo@servidor.com";
$asunto = "Prueba";
$nombre = "Nombre: ".$name;
$mensaje = "Comentarios: ".$comments;
if(mail($para,$asunto,$mensaje,"De: ".$remitente))
{
echo ("Mensaje enviado");
}
else
{
echo ("Error en el envio...");
}
?>
</BODY>
</HTML>
Tambien lo he visto de una manera muy complicada que utilice como segunda medida pero que tampoco funciono porque los datos JAMAS LLEGAN AL CORREO al igual que con este codigo.
Este codigo esta basado en lo que encontre como "la forma mas sencilla de mandar correo con PHP" y que esta basado en los parametros "mail(destinatario,asunto,mensaje,otros_datos)" y lo he ensayado en dos servidores distintos (uno publico y uno privado, el primero: lycos), ambos tienen habilitada la opcion de PHP pero en ninguno funciona
Cual es el error?
PD: En varios intentos me que he hecho me ha mostrado los 2 mensajes posibles: "Mensaje enviado" y "Error en el envio...", ambos con el mismo fruto: no llega el mensaje.
Gracias de antemano a quienes me puedan colaborar.
segan
agosto 30, 2005, 04:38
Bueno.... la función de envio de mails con php es más sencilla de lo que normalmente uno esperaria en cualquier lenguaje de programación orientado a la WEB (ASP,Php,etc).
Esta Función es "mail()" y tiene ciertos parametros básicos para hacerla funcionar y estos son:
mail(destino, tema, texto mensaje);
Estos son los parametros más básicos de envio de e-mail y son facilmente identificables por cualquier persona con un conocimiento basico en e-mails.
Observando el codigo que deseas implementar por varias razones marca error y estos son:
1. Tratas de enviar muchas variables en la función mail(), te aconcejo que definas cuales son las 3 variables básicas de uso en función y trata de nuevo, por ejemplo:
a) Deseas enviar el comentario a un correo electronico especifico en la variable "$para" eso esta muy bien ese podria actuar como el destinatario.
b) El asunto esta un poco corto pero esta muy bien como una prueba, trata de hacer más interactivo el formulario de entrada de este dato.
c) Aqui es donde tienes el gran problema tratas de enviar varias variables en una sola y esto esta haciendo que el mail() falle, te sugiero algo como esto:
$mensaje = "$comments+$remitente";
Al final la función quedaria asi: mail($para,$asunto,$mensaje);
2. Estas tratando de anidar en un IF la función mail para comprobar el envio, tecnicamente esta bien porque la función devuelve un valor booleano, pero en la practica es algo que generaria muchos problemas asi que te aconcejo algo si como esto:
if ($para){
if ($asunto){
if ($mensaje){
mail($para,$asunto,$mensaje);
print "<script>alert('mensaje enviado con exito')</script>";
} else {
print "<script>alert('El mensaje no se pudo enviar, le falto el mensaje')</script>";
}
} else {
print "<script>alert('El mensaje no se pudo enviar, le falto el asunto')</script>";
}
} else {
print "<script>alert('El mensaje no pudo enviarse, sin destino no llega')</script>";
}
Esta es una validación muy extrema pero avisa la clase de error que provoca la falta de uno de los parametros básicos de envio de mail.
*Espero con esto ganarme un karma*
La_PaRCa
agosto 30, 2005, 05:19
Um, no creo que lo que dice segan sea elproblema.
Si ensayaste este script en el espacio web de lycos no te va a funcionar. Los servidores de lycos, aunque soportan php, tienen desactivada la opcion de enviar correos para evitar que los spammers utilicen estos servicios.
Si lo ensayaste en una maquina privada, es probable que necesites configurar las variables SMTP y smtp_port en el archivo de configuracion de php (php.ini) para apuntar a un servidor smtp válido (por defecto vienen apuntando a localhost)
segan
agosto 30, 2005, 06:05
ahhhh otra cosa es la configuración de servidor web.....
Pero la verdad creo que el error de "ZilverDrag-On" esta en como pone la función mail(), ya que también mail() aparte de las 3 básicas que ya conocemos, tiene también una cuarta variable que podriamos definir como "cabecera" esta variable en la función cumple la tarea de (From/Date/CC/BCC) Copia de carbón, Copia de carbón invisible, De, Fecha para el envio de multiples mails. Llegue a esa conclusión porque al mirar el script de envio hay más de 3 variables de uso en la función.
segan
agosto 30, 2005, 06:06
Ademas.... algunas funciones propias de Php al agregarseles comillas (") dobles ó sencillas generan error de sintaxis
ZilverDrag-On
agosto 31, 2005, 02:30
......
Esta es una validación muy extrema pero avisa la clase de error que provoca la falta de uno de los parametros básicos de envio de mail.
*Espero con esto ganarme un karma*
Un karma? Se los gano todos........... Pero no los mendigue que si alguien considera que su aporte es bueno simplemente se los da y ya.
Gracias por la explicacion voy a tratar de hacer lo que me recomiendas a ver como me va.
Gracias tb. a la_parca pero anteriormente me funcionaba en lycos con un script copyrateado (lease "robado" o tomado en prestamo de otra web), pero ahora queria hacerlo yo mismo y no me funciono, snifff.
za_eddie
septiembre 28, 2007, 01:36
Pues yo he usado la funcion mail de php y creeme que es muy buena.
por lo que yo veo tu formulario no pasa la informacion a las variables de php.
yo hago lo siguiente
formulario en html
<input type="text" name="nombre"> <------ nombre para mi variable en php
script php
<?
$nombre=$_REQUEST['nombre'];
?>
con esto la informacion del formulario de la casilla nombre pasa a la variable $nombre , ya es solo de completar tu formulario y hacer la funcion mail por ejemplo
mail($nombre <----- tu destinatario,"titulo","cuerpo","comentarios");
espero te sirva
vBulletin®, Copyright ©2000-2009, Jelsoft Enterprises Ltd.