Solucionado

No me funciona la función mail()

2574 visitas 6 respuestas

Hola, tengo un problema con la función mail. no sé por qué, no me funciona.

He subido un script bastante simple aquí: http://www.anemaecore.net/pruebamail.php

Cuyo contenido es este: <?php $mensaje = "Formulario enviado desde la web"; mail('anemaecore@gmail.com', 'Formulario enviado desde la web', utf8_decode($mensaje), "From:info@anemaecore.net\nReply-To: info@anemaecore.net\nMIME-Version: 1.0\nContent-Type: text/html, charset=iso-8859-1\n"); echo $mensaje; ?>

Bastante simple, como podéis ver, lo único que debería hacer es enviar un e-mail a anemaecore@gmail.com de parte de info@anemaecore.net y mostrar en pantalla el mensaje enviado, pero no consigo que envíe el e-mail. ¿Hay algún error? ¿Puede ser un problema de configuración de servidor? y si es así, ¿Como lo resuelvo?

Gracias por adelantado

por desde España

Registrado desde: 25 Jul 11

Respuestas

1 0

Ese tipo de códigos tan "saturados" suelen dar problemas, mejor inténtalo de la siguiente manera:

<?php    $de = "info@anemaecore.net";
$para = "anemaecore@gmail.com";
$asunto = "Formulario enviado desde la web";
$nombre = $_POST["nombre"];
$mensaje = "Formulario enviado desde la web";
$sheader="From:".$de."nReply-To:".$de."n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."n";
$sheader=$sheader."Mime-Version: 1.0n";
$sheader=$sheader."Content-Type: text/html";
mail($para,$asunto,$mensaje,$sheader);

echo $mensaje; 

?>

Puede que te funcione mucho mejor.

por desde Colombia

Registrado desde: 26 Jul 11
0 0

Hola Alorse,

Gracias por el código, pero me temo que no está ahí el problema. Sigue sin funcionar.

Por si sirve de ayuda, aclaro que la dirección del $para existe y no es una redirección de correo, sino un buzón real.

También he probado a cambiar esas "n" al final de las cadenas de $sheader por "\n" pero tampoco.

por desde España

Registrado desde: 25 Jul 11
1 0

Entonces debe ser que su servidor tiene la función mail() inhabilitada y si es así ya tendrás que hablar con ellos o buscar otro hosting para probar el script. Porque como te lo puse arriba estoy seguro que funciona.

por desde Colombia

Registrado desde: 26 Jul 11
0 0

Ok, le he escrito a soporte a ver qué me contestan. Por cierto, el hosting es de Hostalia, por si alguien ha trabajado ya con ellos y se ha encontrado con el mismo problema.

por desde España

Registrado desde: 25 Jul 11
1 0

Si el hosting usa posfix, seguramente las cabeceras tendrás que separarlas con contrbarra n, y si es otro servidor con contrabarra r contrabarra n. La segunda manera es la "oficial" según los RFC de mail, pero posfix al ser de entornos tipo UNIX espera que le pases el texto en formato UNIX y le añade él el contrabarra r, quedando con doble contrabarra r + contrabarra n si las pasas en el formato no UNIX.

En fin, lo de las cabeceras es para que no te rechace el correo el receptor o lo marque como spam. Pero aparte te deberías autenticar para enviar correo, cosa que se hace con el modificador -fTuEmail, por ejemplo:

mail($to, $subject, $body, $headers, '-f' . $from);

por desde España

Registrado desde: 14 Jan 09
0 0

Gracias Eloy,

Efectivamente había que añadir este parámetro -f con una dirección real del dominio y además la variable safe_mode de PHP debe estar a Off para que funcione.

por desde España

Registrado desde: 25 Jul 11