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, $asunto, utf8_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>";
}
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";
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