Foros del Web » Programando para Internet » PHP »

Problema al enviar e-mail con funcción mail()

Estas en el tema de Problema al enviar e-mail con funcción mail() en el foro de PHP en Foros del Web. Hola a todos, Desde hace bastante tiempo, utilizo un script en php para enviar los e-mailde los formularios de contacto que siempre me fue muy ...
  #1 (permalink)  
Antiguo 27/04/2009, 10:00
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema al enviar e-mail con funcción mail()

Hola a todos,

Desde hace bastante tiempo, utilizo un script en php para enviar los e-mailde los formularios de contacto que siempre me fue muy bien. Es el basico que se puede ver en la web de php y otras.

Aqui os lo pongo:

Código PHP:
$recipient"<el-mail-mio>";
$subject"Formulario web";
$message "<center><font size=\"4\"><b>Formulario de contacto web</b></font></center>";
$message.= "<br>Nombre y apellidos:&nbsp;<b>".$nombre."&nbsp;".$apellidos."</b>";
$message.= "<br>Dirección:&nbsp;<b>".$direccion."</b>";
$message.= "<br>Código Postal:&nbsp;<b>".$codigo."</b>";
$message.= "<br>Localidad:&nbsp;<b>".$localidad."</b>";
$message.= "<br>Provincia:&nbsp;<b>".$provincia."</b>";
$message.= "<br>Teléfono:&nbsp;<b>".$telefono."</b>";
$message.= "<br>Fax:&nbsp;<b>".$fax."</b>";
$message.= "<br>E-mail:&nbsp;<b>".$mail."</b>";
$message.= "<br>Consulta:&nbsp;<b>".$consulta."</b>\n";
$headers "From: ".$nombre."<".$mail.">\n";
$headers.= "Return-Path: <el-mail-mio>\n";  // Re-chemin de retour pour les erreurs
$headers.= "Content-Type: text/html; charset=iso-8859-1\n"// Type MIME
$confirmacion=mail($recipient$subject$message$headers); 
Todas las variables del script provienen del formulario que rellena el internauta. Y en $mail, es el e-mail del internauta y asi cuando se recibe el mail en el outlook o otro, se da directamente a responder para contestar.
Todo esto siempre funcciono de maravilla pero desde hace unos dias, al subir otra web, me di cuenta que ya no era capaz de mandar los mails de un internauta que tuviera un mail con un nombre de dominio hotmail punto com. Es decir que si el internauta del mail tiene loquesea arroba hotmail punto com, ya no se envia nada. Tenia la duda de si a lo mejor tampoco es que fuera antes pero he comprobado los mensajes recibidos con anterioridad y vi que si tenia mensajes con direcciones de hotmail punto com

Tambien he mirado en otros hosting que tengo y ahora tampoco me va en los otros con los mails de hotmail punto com

Entonces, me pusé en contacto con la gente que me suministra hosting y les explique el tema. anduvieron a mirar pero no me saben decir nada.

y investigando nos dimos de cuenta que si en el codigo en ves de escribir el From con F mayuscula se escribe con f minuscula, entonces, se envia el mensaje con cualquier e-mail que pueda tener el internauta.

Es decir en vez de
$headers = "From: ".$nombre."<".$mail.">\n";
si escribimos
$headers = "from: ".$nombre."<".$mail.">\n";

Entonces, funciona todo como antes. El problema es que me tendria que poner a cambiar eso en todas las web ya hechas. Ademas, tengo una web con joomla y me pasa el mismo problema. Y si me tengo que poner a buscar para cambiar eso, pierdo demasiado tiempo. Ademas que la solucion encontrada me parece ridicula añadiendo que todo funccionaba antes sin problema.

A ver si se le ocurre algo a alguien de este foro. No se si el problema viene de php, o del servidor de correo. Ellos usan postfix.

Un cordial saludo

Última edición por Oli_ar; 27/04/2009 a las 10:05
  #2 (permalink)  
Antiguo 27/04/2009, 10:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema al enviar e-mail con funcción mail()

pues a mi me queda claro que no es problema de PHP ....

has oído algo de reutilizar código.... supongo que si hubieras hecho una función para envíar emails no tendrías que modificar todo.... ¡solo tendrías que actualizar el script de tu función!!


me queda mas que claro, que nunca es culpa de PHP .... sino del programador

ahora, ¿donde esta el problema concreto de programación??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/04/2009, 10:42
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema al enviar e-mail con funcción mail()

Hola,

He comentado que ese script se esta utilizando una vez en varios hosting. Entonces no soluciono nada en utilizar una funcion ya que tendria que modificar esa funcciona igual de veces que el script. suelo utilizar funcciones cuando uso repetidamente un script. No me complico para solo utilizarla una vez.

Tampoco creo que sea problema de php porque tampoco se donde puede estar el problema.

Repito que en vez de escribir

$headers = "From: ".$nombre."<".$mail.">\n";

si escribimos

$headers = "from: ".$nombre."<".$mail.">\n";

entonces los mails se envian sin problemas.

La verdad que no me parece muy logico tener que modificar este script sin razon logica. Ademas que en joomla, ahora tambien me pasa lo mismo. Imagninate que despues me pongo a instalar otra aplicacion que envia email y me tengo que preocupar de mirar si from esta con f mayuscula o minuscula.

Solo pregunto si alguien sabe de donde puede venir el problema.

Saludos
  #4 (permalink)  
Antiguo 27/04/2009, 19:03
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Problema al enviar e-mail con funcción mail()

Oli_ar:

Cita:
Ademas que la solucion encontrada me parece ridicula añadiendo que todo funccionaba antes sin problema.
A ver si se le ocurre algo a alguien de este foro. No se si el problema viene de php, o del servidor de correo. Ellos usan postfix.
Verdaderamente no hay nada ridiculo en eso. El problema NO proviene de php
y tampoco del servidor de correo propiamente dicho.
Es una estrategia que hoy dia utilizan los servidores de correo en su afan por detener el spam o correo basura y tiene que ver con la configuracion del servidor de correo que recibe el mail.

La mayoria de los servidores de correo utilizan el sistema de puntos para clasificar los correo entrante.

Ejemplo: si el correo entrante proviene de un dominio que no tiene su SPF records se le asigna un punto o 1/2 punto. Referente las cabeceras, si un correo no tiene su cabecera como debe ser, y en esto he observado que aun las muyusculas y minusculas provocan puntaje adicional y asi sucesivamente hasta hacerlo tan estricto que No dejan pasar un correo mal diseñado o mal configurado. Hotmail.com ostenta el titulo de ser de los mas estrictos en la industria.

Ahora, el administrador del servidor puede establecer una regla que diga que si el correo obtiene mas de 4 puntos sera clasificado como spam, 5 puntos se rechaza, 6 puntos ni siquiera se responde y hacen lo que se llama botarlo o desaparecerlo totalmente; en fin cada servidor tiene su politica especifica de combatir el correo basura.

Frases come esta son totalmente falsas: "Si envias mas 10000 correos tu IP sera baneada", "Metodo seguro y definitivo de enviar a hotmail.com directo a la bandeja de entrada".

La verdad es que hay servidores de correo como los de hotmail.com, gmail.com, etc y servidores de correo no famosos que envian decenas de miles por hora sin problema alguno.

Para terminar, no hay duda que tu problema es de formacion del codigo del correo en su parte de la cabecera y seguramente el servidor de correo de hotmail.com tiene un sistema de puntaje estricto. Lo mas probable es que la F causaba un 1/2 punto o algo parecido y hacia que el puntaje total pasara de los permitido provocando ese resultado.

Asimismo, hay ciertas variable de configuracion del servidor que envia que provocan el rechazo inmediato como son las Ip dinamicas, no tener los reverso de la IP, etc; esta ultima ya es parte de las regulaciones de Internet como requisito necesario, pero No todos los servidores de correo se han puesto tan estrictos como para requerirlo ya que estarian frenando la aparicion de mas y mas servidores de correo; en cambio hotmail.com y unas otras se han adherido ciegamente a este requisito lo que ha provocado tanto problema.
Ahora bien, porque requerir el reverso, sencillo, esta es una forma de que el spammer o hacker NO se esconda ya que el reverso identifica la IP con un dominio y un servidor de dns y el responsable puede ser encontrado con facilidad y si un spammer o hacker falsea la IP esta no podra reportar su reverso y esa conexion sera rechazada de inmediato provocando una reduccion substantial en la incidencia de spam.

Finalmente, y en mi caso conseguir el reverso me costo algun tiempo ya que lo debe hacer mi ISP o el que maneja el bloque de Ips asignados por LACNIC a ese ISP y se hace en los servidores de LACNIC segun corresponda para cada parte del mundo.

Saludos
Franco
  #5 (permalink)  
Antiguo 27/04/2009, 21:45
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problema al enviar e-mail con funcción mail()

Código PHP:
$recipient"<el-mail-mio>"
$subject"Formulario web"
$message "<center><font size=\"4\"><b>Formulario de contacto web</b></font></center>"
$message.= "<br>Nombre y apellidos:&nbsp;<b>".$nombre."&nbsp;".$apellidos."</b>"
$message.= "<br>Dirección:&nbsp;<b>".$direccion."</b>"
$message.= "<br>Código Postal:&nbsp;<b>".$codigo."</b>"
$message.= "<br>Localidad:&nbsp;<b>".$localidad."</b>"
$message.= "<br>Provincia:&nbsp;<b>".$provincia."</b>"
$message.= "<br>Teléfono:&nbsp;<b>".$telefono."</b>"
$message.= "<br>Fax:&nbsp;<b>".$fax."</b>"
$message.= "<br>E-mail:&nbsp;<b>".$mail."</b>"
$message.= "<br>Consulta:&nbsp;<b>".$consulta."</b>\n"
$headers "From: ".$nombre."<".$mail.">\n"
$headers.= "Return-Path: <el-mail-mio>\n";
 
$headers .= "MIME-Version: 1.0\n"  
$headers.= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "X-Priority: 1\n"
$headers .= "X-MSMail-Priority: High\n"
$headers .= "X-Mailer: php\n"
$confirmacion=mail($recipient$subject$message$headers); 

Hola prueba con esto y me avisas si te funciono o no?
  #6 (permalink)  
Antiguo 27/04/2009, 22:44
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Problema al enviar e-mail con funcción mail()

Oli_ar:

Coincido plenamente con el amigo DarkPeru, en el sentido que al
incluir ->

Cita:
$headers .= "X-MSMail-Priority: High\n";
$headers .= "X-Mailer: php\n";
Que especifica MSMail.
los servidores de hotmail.com dan prioridad a todo lo
que contenga cabeceras de MS (Microsoft).

Ademas, las cabeceras en este caso son mas completas, especificas
y evitan puntaje negativo.

Saludos
Franco
  #7 (permalink)  
Antiguo 28/04/2009, 03:03
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema al enviar e-mail con funcción mail()

Hola,

Antes de nada, muchas gracias por vuestras respuestas.

He probado el añadir las cabeceras que mencionais al mensaje pero tampoco sale al poner un remitente de hotmail.com.

Parece ser que lo unico que me queda es mirar con mi proveedor de hosting si se puede hacer algo en le servidor de correo para dejar pasar estes mensajes.

Lo que me preocupa es que si antes era capaz de mandar los correos y ahora, si lo arreglo, quien me dice que no me vuelve a fallar ne unos meses.

Gracias por vuestras respuestas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:06.