Foros del Web » Programando para Internet » PHP »

Caracteres extraños en asunto del mail

Estas en el tema de Caracteres extraños en asunto del mail en el foro de PHP en Foros del Web. Hola a todos, Estoy usando un mailer de php para mandar un email mediante un formulario. Todo va genial pero si trato de poner tildes ...
  #1 (permalink)  
Antiguo 01/10/2009, 09:42
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Caracteres extraños en asunto del mail

Hola a todos,

Estoy usando un mailer de php para mandar un email mediante un formulario.
Todo va genial pero si trato de poner tildes en el asunto del email, se acabó la fiesta.

Por ejemplo si pongo jesús en el subject, en el asunto del mail, me llega como jesXXs.

Estoy usando:
Código:
  $header .= "Content-Type: text/plain; charset=UTF-8";
e incluso
Código:
  $header .= "Content-Type: text/plain; charset=ISO-8859-1";
pero nada cambia.

¿Cómo puedo solucionarlo?
Muchas gracias
  #2 (permalink)  
Antiguo 01/10/2009, 09:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Caracteres extraños en asunto del mail

Necesitas que todo este en utf-8, base de datos, archivo (utf-8 without bom), header, meta etc etc
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 01/10/2009, 10:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Gracias por tu respuesta.

En la pagina que pone -gracias, formulario enviado-, la ultima que muestra el programa justo antes de que se reciba el email, hago un echo y la tilde se muestra correctamente, muestra jesús. Sin embargo cuando recibo el email, en el subject, en el asunto, muestra jesXXs

Quizás ayude ver el código entero:

Código:
<?php

$to = "[email protected]";
$subject = "jesús";
$body = "Aquí va el mensaje añorado y con acción";
$headers = "From: [email protected]\r\nReply-To: [email protected]";
if (mail($to, $subject, $body, $headers)) {
  echo("<p>Gracias, mensaje enviado</p>");
 } else {
  echo("<p>Ha habido un error...</p>");
 }
?>
Según está, envia todo correctamente, salvo por el asunto.
Como digo la tilde en la ú de jesús la hace jesXXs

Gracias de nuevo

Última edición por GatorV; 01/10/2009 a las 14:32
  #4 (permalink)  
Antiguo 01/10/2009, 11:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Caracteres extraños en asunto del mail

Te falta declarar en ese codigo el header de que el mensaje que vas a enviar esta en un formato utf-8
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 01/10/2009, 13:01
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Caracteres extraños en asunto del mail

quizas debas pasar tu titulo por utf8_encode()

Y claro, agregar
Cita:
$header .= "Content-Type: text/plain; charset=UTF-8";
  #6 (permalink)  
Antiguo 02/10/2009, 03:52
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Caracteres extraños en asunto del mail

Por si a alguien le sucede lo mismo:
$subject = iconv_mime_encode('Asunto:',$subject);

Así si funciona.
Gracias por leer
  #7 (permalink)  
Antiguo 30/03/2010, 10:41
Avatar de Yuukan  
Fecha de Ingreso: septiembre-2004
Ubicación: Vivo en Guatemala
Mensajes: 29
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Caracteres extraños en asunto del mail

Si a alguién sigue sin funcionarle esta solución pueden usar esta función que a mí m funciono:

Cita:
function mime_header_encode($string) {
if (preg_match('/[^\x20-\x7E]/', $string)) {
return ' =?UTF-8?B?'. base64_encode($string) ."?=";
}
}
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:09.