Foros del Web » Programando para Internet » PHP »

Funcion mail() no envia nada

Estas en el tema de Funcion mail() no envia nada en el foro de PHP en Foros del Web. Llevo todo el día indagando en el código y en el servidor y todavía no sé porqué no se envían los emails utilizando la funcion ...
  #1 (permalink)  
Antiguo 14/01/2013, 20:35
 
Fecha de Ingreso: julio-2012
Ubicación: UK
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 10
Funcion mail() no envia nada

Llevo todo el día indagando en el código y en el servidor y todavía no sé porqué no se envían los emails utilizando la funcion mail() en PHP. El servidor smtp esta funcionando y el puerto abierto, y el caso es que he conseguido que me envíe un email (de unos 30 intentos...) Aquí os dejo el código:
Código PHP:
<?php

    $friend 
ejemplo@gmail.com;
    
$own ejemplo@hotmail.com;
    
$url $_REQUEST['link'];  //variable que recoje una url de una pagina anterior
    
$destinatario $friend;
    
$asunto "Message by ".$own;
    
$cuerpo '
    <html>
    <head>
       <title>Titulo de prueba</title>
    </head>
    <body style="font-family:Trebuchet,Trebuchet MS,Arial,sans-serif;">
    <p>Hello!</p>
    <p>
    <b>This is a test</b>. The email comes from: <b>'
.$own.'</b>, and you can watch my profile clicking the next link:
    <br><br>
    '
.$link.'
    </p>
    <p>
    See you soon!
    </p>
    </body>
    </html>
    '
;

    
//para el envío en formato HTML
    
$headers "MIME-Version: 1.0\r\n";
    
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

    
//dirección del remitente
    
$headers .= "From: Ejemplo Martinez <[email protected]>\r\n";

    
//dirección de respuesta, si queremos que sea distinta que la del remitente
    
$headers .= "Reply-To: [email protected]\r\n";

    
mail($destinatario,$asunto,$cuerpo,$headers)
?>
Supongo que alguien me recomendará PHPMailer, pero primero quisiera saber si se puede enviar correos así con la simple función de mail().

Gracias de antemano
  #2 (permalink)  
Antiguo 14/01/2013, 20:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Funcion mail() no envia nada

Si puedes, de eso no hay duda, ¿si no por qué existiría dicha función?

Pero dicha función no envía correos, eso lo hace tu servidor de SMTP local, la función mail() solo devuelve un boolean para decirte si pudo pasar el mensaje al servidor o no.

De ahí a que realmente se envíe algo ya es responsabilidad de tu servidor SMTP y no de PHP.

Has pruebas mas sencillas, con datos que tu pongas, si el 80% de las veces funciona entonces no deberías tener problemas.

Sin embargo yo pensaría mas en probar exhaustivamente el servidor de SMTP, ahí la clave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/01/2013, 05:56
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Funcion mail() no envia nada

También te sugiero que revises el archivo "php.ini" donde aparecen los parámetros para la conexión con el servidor smtp algo así:

[mail function]
; For Win32 only.
SMTP = mail.server.com
smtp_port = 25

Espero que te sirva ^^
  #4 (permalink)  
Antiguo 15/01/2013, 14:12
 
Fecha de Ingreso: julio-2012
Ubicación: UK
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: Funcion mail() no envia nada

Cita:
Iniciado por pateketrueke Ver Mensaje
Si puedes, de eso no hay duda, ¿si no por qué existiría dicha función?

Pero dicha función no envía correos, eso lo hace tu servidor de SMTP local, la función mail() solo devuelve un boolean para decirte si pudo pasar el mensaje al servidor o no.

De ahí a que realmente se envíe algo ya es responsabilidad de tu servidor SMTP y no de PHP.

Has pruebas mas sencillas, con datos que tu pongas, si el 80% de las veces funciona entonces no deberías tener problemas.

Sin embargo yo pensaría mas en probar exhaustivamente el servidor de SMTP, ahí la clave.
La verdad es que he seguido un poco tus recomendaciones de ir haciendo pruebas mas sencillas y al final he dado con el problema. Resulta que lo que hacia que no se enviaran los correos era por recojer la url que le pasaba por AJAX. En el archivo php del que provienen las variables incluia una funcion en javascript que guardaba la url actual (utilizando document.URL) pero al pasarla por AJAX a dicha pagina php donde se envia el email no se pasaba y eso era lo que hacia que directamente el correo no se enviara. He utilizado una solucion alternativa que es simplemente guardando en la pagina de envio de email una variable que guarde la direccion url anterior:
Código PHP:
$url $_SERVER['HTTP_REFERER']; 
y funciona a las mil maravillas

Cita:
Iniciado por Sirrohan Ver Mensaje
También te sugiero que revises el archivo "php.ini" donde aparecen los parámetros para la conexión con el servidor smtp algo así:

[mail function]
; For Win32 only.
SMTP = mail.server.com
smtp_port = 25

Espero que te sirva ^^
Ya lo había considerado pero aun así gracias

Etiquetas: emails, mail()
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 16:05.