Comunidad de diseño web y desarrollo en internet online

Problemas con tildes y eñes de un formulario sólo en hotmail

Citar            
MensajeEscrito el 19 Nov 2009 06:44 pm
Hola a todos. Necesito ayuda urgentemente porque estoy muy pez en esto del PHP y tengo que hacer que un formulario funcione perfectamente en varios tipos de clientes de correo. Ya sé que este tema se ha tratado varias veces, pero me parece que mi caso es un poco especial. Me gustaría que alguien me aportara una solución o me dijera donde puedo encontrarla. Tengo un formulario que envia los mensajes correctamente o clientes de correo como Outlook por ejemplo. Sin embargo si envío los mensajes de correo a hotmail o webmail, el cuerpo del mensaje muestra correctamente los tildes las eñes, no así el asunto, que sustituye estos caracteres por esos tan raros (ñoñ...). Os pongo el código a ver si hay alguien que me sepa decir dónde está el problema... y muchas gracias a todos de antemano.

<?php

$boundary='didondinaditondelosdudosdodudundodudindon';

$email_to = "emaildestino";
$bounce_email = "emaildestino";
$reply_to = $_POST['email'];

$from = $_POST['email'];
$email_from = $from; // Email del remitente
$email_subject = $_POST["dominio"]; // Asunto del mail
$email_txt = $_POST['comentarios']; // Texto en el cuerpo del mensaje

$headers = "From: $email_from \n";
$headers .= "Reply-To: $reply_to \n";
$headers .= "X-Mailer:PHP/".phpversion()."\n";
$headers .= "Mime-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";

// Mostrando el texto en el cuerpo del mensaje
$email_message = "--". $boundary ."\n"; //Apertura de frontera
$email_message .= "Content-Type: text/html; charset=utf-8 \r\n\n";
$email_message .= "$email_txt\n\n";

// Leyendo el archivo para adjuntar
$newfile = $_POST['adjunto'];
$fileatt = "files/" . $newfile;
$fileatt_type = "application/octet-stream";
$fileatt_name = $_POST['adjunto'];

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

$data = chunk_split(base64_encode($data));

// Adjuntando archivo
if ($fileatt_name == "") {
$email_message .= "";
} else {
$email_message = $email_message . "--" .$boundary. "\n";
$email_message .= "Content-Type: {$fileatt_type}; name=\"{$fileatt_name}\"\n";
$email_message .= "Content-Disposition: attachment; filename=\"{$fileatt_name}\"\n";
$email_message .= "Content-Transfer-Encoding: base64\n\n";
$email_message .= $data . "\n\n";
}

$email_message = $email_message . "--" . $boundary ."--"; //Cierre de frontera

//Enviando el mail
$ok = @mail($email_to, $email_subject, $email_message, $headers);

?>

Por SBeto

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 23 Nov 2009 07:11 pm
antes de definir $ok añade la siguiente linea:

Código PHP :

$email_message = htmlentities($email_message, ENT_NOQUOTES, 'UTF-8');

con eso toda vocal acentuada o caracter especial se convertira a su equivalente en codigo html.

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.