Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/04/2007, 03:51
Deiviz
 
Fecha de Ingreso: mayo-2005
Ubicación: Avilés/Asturias
Mensajes: 79
Antigüedad: 19 años, 9 meses
Puntos: 0
No se me escriben las tildes ni las eñes al enviar un mail con php

Hola compañeros, tengo un problema. He diseñado un formulario para enviar un correo. Todo funciona a la perfección excepto que cuando llega el correo, las eñes y acentos son sustituidos por caracteres extraños.

Por lo que veo por ahí, algunos dicen que la solución es utilizar la función htmlentities, pero ¿eso no funciona sólamente si el mail se envía como html?

Es decir, yo quiero enviar el correo como texto, pero no me salen acentos ni eñes. La única alternativa es mandarlo como html e introducir la función htmlentities???

Os pongo el código:
Código PHP:
$nombre $_POST['nombre'];
$mail $_POST['mail'];
$empresa $_POST['empresa'];

$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "Este mensaje fue enviado por " $nombre ", de la empresa " $empresa " \r\n";
$mensaje .= "Su e-mail es: " $mail " \r\n";
$mensaje .= "Mensaje: \r\n" $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());

$para '[email protected]';
$asunto 'Contacto desde la web';

$x mail($para$asuntoutf8_decode($mensaje), $header);

if(
$x){
    echo 
"<p>Mensaje enviado correctamente</p>";
}else{
    echo 
"<p>Se ha producido un error que ha impedido enviar el correo.</p>";

Para que me escriba los acentos tengo que poner el siguiente código:
Código PHP:
//en vez de $header .= "Content-Type: text/plain";
$header .= "Content-Type: text/html; charset=ISO-8859-1";

//en vez de $mensaje .= "Mensaje: \r\n" . $_POST['mensaje'] . " \r\n";
$mensaje .= "Mensaje: \r\n" .htmlentities$_POST['mensaje'] ). " \r\n"
El problema de hacer esto es que me escribe todo el mensaje en una linea (eso sí, con acentos y eñes) y entonces en vez de \r\n tendría que escribir <br />.

MI PREGUNTA:
1.- ¿Lo envío como html (y sustituyo los \n\r por <br />)? ¿Qué ventajas y desventajas hay frente a enviarlo como texto plano?
2.- ¿ O lo envío como texto plano? Entonces ¿de qué manera puedo hacer que se escriban los acentos y las eñes?

Muchas gracias a todos y todas
__________________
Si no hubiera Sol sería de noche . Heráclito de Éfeso :si: