Foros del Web » Programando para Internet » PHP »

función mail() y acentos

Estas en el tema de función mail() y acentos en el foro de PHP en Foros del Web. Hola, tengo un poblema a la hora de enviar texto acentuado a través de la función mail(). El texto lo saco de una base de ...
  #1 (permalink)  
Antiguo 01/11/2004, 11:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 21
Antigüedad: 19 años, 5 meses
Puntos: 0
función mail() y acentos

Hola, tengo un poblema a la hora de enviar texto acentuado a través de la
función mail().
El texto lo saco de una base de datos. Por ejemplo "Investigación y
Desarrollo". Y este es el texto que pongo en el cuerpo del mail que envió.
Lo que recibo és: "Investigaci" y nada más.
Alguien me puede decir que hago mal?
Gracias!

Estas son las cabeceras que estoy usando:
$header = "From:direccion@mail\nReply-To:direccion@mail\n";
$header .= "X-Mailer:PHP/".phpversion()."\n";
$header .= "Mime-Version: 1.0\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n\r\n";
  #2 (permalink)  
Antiguo 01/11/2004, 13:43
 
Fecha de Ingreso: agosto-2003
Ubicación: España
Mensajes: 202
Antigüedad: 20 años, 8 meses
Puntos: 0
Mira, te muestro una forma de quitarle las tildes a las palabras, pero luego tienes el problema de la ortografia...

Código PHP:
<?php 
function quitarTildes($msg
{  
$msg nl2br($msg);
       for(
$i 0$i strlen($msg); $i++) { 
               switch(
ord($msg[$i])) { 
                       case 
192: case 193//À Á 
                               
$rtrn .= "A"
                               break; 
                       case 
200: case 201//È É 
                               
$rtrn .= "E"
                               break; 
                       case 
204: case 205//Ì Í 
                               
$rtrn .= "I"
                               break; 
                       case 
210: case 211//Ò Ó 
                               
$rtrn .= "O"
                               break; 
                       case 
217: case 218//Ù Ú 
                               
$rtrn .= "U"
                               break; 
                       case 
224: case 225//à á 
                               
$rtrn .= "a"
                               break; 
                       case 
232: case 233//è é 
                               
$rtrn .= "e"
                               break; 
                       case 
236: case 237//ì í 
                               
$rtrn .= "i"
                               break; 
                       case 
242: case 243//ò ó 
                               
$rtrn .= "o"
                               break; 
                       case 
249: case 250//ù ú 
                               
$rtrn .= "u"
                               break; 
                       case 
241//ñ 
                               
$rtrn .= "n"
                               break; 
                       case 
209//Ñ 
                               
$rtrn .= "N"
                               break; 
                       case 
231//ç 
                               
$rtrn .= "c"
               break; 
                       case 
199//Ç 
                               
$rtrn .= "C"
                               break; 
                       case 
128//€ 
                               
$rtrn .= "Euros"
                               break; 
                       default: 
                               
$rtrn .= (string)$msg[$i]; 
                               break; 
               } 
       } 
       return 
$rtrn

?>
Bueno, eso sustituye todos estos carácteres que tenemos aquí en europa...que no estan en américa....
Bye!
PD: el nl2br lo puedes quitar...
  #3 (permalink)  
Antiguo 01/11/2004, 13:46
 
Fecha de Ingreso: agosto-2003
Ubicación: España
Mensajes: 202
Antigüedad: 20 años, 8 meses
Puntos: 0
Y otra cosa, prueba de recibir el correo en otro server, porque aveces es el server el que esta tirao pa lla... como p. e. walla....
prueba con hotmail....
  #4 (permalink)  
Antiguo 02/11/2004, 03:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 21
Antigüedad: 19 años, 5 meses
Puntos: 0
Pero yo lo que quiero es ver los acentos. Encuentro un poco fuerte que la solución sea cargarse los acentos y llenar el mail de faltas de ortografía.
No hay alguna opción mejor?
Muchas gracias,
J.
  #5 (permalink)  
Antiguo 02/11/2004, 13:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podrías poner el código completo que usas .. además de asegurate que en tu BD tendas el dato completo antes de extraerlo .. no sea que en el proceso de creación/atualización de ese registro (campo(s)) se esté omitiendo dichos caracteres acentuados y otros (prueba con dieresis y cosas así).

En principio el "char-set" que usas es el correcto para temas de acentos y demás .. habría que ver luego tu cliente de correo que usas para leer ese e-mail.

Un saludo,



Un saludo,
  #6 (permalink)  
Antiguo 03/11/2004, 12:28
 
Fecha de Ingreso: agosto-2003
Ubicación: España
Mensajes: 202
Antigüedad: 20 años, 8 meses
Puntos: 0
Intenta recibir el correo en otro lugar.
Pienso que tu server o tu cliente de correo, estan haciendote la puñeta. Alomejor es tu programación, pero casi que no creo...
Yo tengo un script parecido, y funciona a la perfección...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:35.