[SOLUCIONADO] Problemas con la función mail de PHP5

Hola a todos!

Vereis, tengo un servidor Apache 2 y PHP5 instalado y no se por qué no puedo enviar correos usando la funcion mail de php.

Curiosamente si que puedo mandar correos usando la funcion mail del bash de linux, pero desde php... ni de cachondeo. Por eso descarto que sea un problema de sendmail o de apertura de puertos del router o alguna cosa de este estilo (¿me equivoco?)

He estado navegando por ahí y he trasteado con la configuración php.ini pero nada de nada, no cambia nada. En principio no me da ningún error (activada la opción error_reporting = E_ALL) pero la funcion mail devuelve false y por supuesto no envia el correo electronico.

En la configuración de php tengo puesto:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail


¿Que puede estar pasando?

Muchas gracias de antemano

Saludos,
Javi

¿A qué te refieres con la función mail de php? Lo que yo conozco de php son llamadas a senmail para enviar correo, pero que yo sepa php no tiene un motor mta propio. Especifica un poco más sobre lo que quieres hacer exactamente.
Saludos.

Hola, yo he utilizado esa función y no he tenido problemas.

Postea la llamada que haces a esa función igual tienes algun error en la instrucción.

Salu2!

Puede pasar que apache esta enjaulado (chroot) y por lo tanto el php no tiene acceso al sendmail, si es asi tienes que utilizar alguna clase como phpmailer y arreglartelas para enviar los emails por tcp al localhost.

Hola a todos

Lo primero, muchas gracias por la respuesta tan rápida.

Ariel no tengo Apache enjaulado y he revisado la configuración de Apache y creo que no hay nada incorrecto.

La llamada a la función mail es la siguiente:

$mensaje = "<html><body>";
		$mensaje .= "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">";
		$mensaje .= "Estimado/a ".$this->nombre.",";
		$mensaje .= "Tus datos para poder acceder al sistema son los siguientes:";
		$mensaje .= "Usuario: ".$this->usuario;
		$mensaje .= "Contraseña: ".$pwd;
		$mensaje .= "Mensaje  generado automáticamente por nuestro sistema. Porfavor, no conteste a esta dirección de correo electrónico.";
		$mensaje .= "</font></body></html>";
		
		$from_address = "midireccion@gmail.com";
		$subject = "Registro de usuario";
		$headers = "From: ".$from_address."\r\n";
		$headers .= "MIME-Version: 1.0\r\n";
		$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
		$headers .= "\r\n";
		$result = mail($this->email,$subject,$mensaje,$headers);


¿Alguna idea?

Muchas gracias!

Javi

Hola,

Mi función tiene esta pinta: mail($destinatario,$asunto,$cuerpo,$headers);

Yo lo que haría es usar la función con valiables asignadas, sencillo. Y ver si la función funciona o no. A mi no me dió ningun problema. Luego le vas añadiendo más detalle, no sé si me explico.

No sé igual el objeto, no tiene valor, o tienes algun error en alguna asignación...

Haz unas pruebas, para asegurate que realmente es la función mail la que te da problemas.

Un saludo,

Si, eso es lo que he estado haciendo y no va de ninguna manera, asique he ido bajando hasta llegar a comprobar que lo que no funciona es sendmail.

Es curioso, pero poniendo mail en consola si que funciona, pero con sendmail no. Por eso creía que si que funcionaba, pero estaba equivocado.

La salida que me da al ejecutar la prueba con sendmail es:

[root@dcph javi]# /usr/sbin/sendmail -v correo@gmail.com
correo@gmail.com... Connecting to [127.0.0.1] via relay...
correo@gmail.com... Deferred: Connection refused by [127.0.0.1]

La verdad, con esto me pierdo un poco porque hace mucho que lo instalé y tb tuve problemas, aunque acabó funcionando. ¿alguien sabe ese error a q se puede deber?

Muchas gracias
Javi

Hola Javi,

Deberías de cerrar este hilo marcandolo como solucionado, despues de haber aclarado que la función no es la causa de tu problema, no se vaya a liar alguien que lea este post.

Y luego habre otra consulta, preguntando sobre tu problema sendmail, ok?

Un saludo.

Totalmente de acuerdo.

Muchas gracias a todos por vuestra ayuda

---- Editado moderación-------
Aclarar que la función mail PHP no era el origen del problema sino el propio sendmail.
Se ha abierto otro hilo para tratar el tema.