¿Cómo enviar un correo electrónico UTF-8?

4 minutos de lectura

¿Como enviar un correo electronico UTF 8
DeepWebMie

Cuando envío el correo electrónico, el correo electrónico no muestra otros caracteres que no sean inglés. Se muestra como a continuación:

余生ä»ä»

Puede saber realmente qué causa esto? Incluso traté de agregar el tipo de contenido y el conjunto de caracteres en el script, todavía muestra lo mismo.

solía Mail::Factory("mail");

  • ¿Que usas? nativo mail() o Zend_Mail o PHPMailer? ¡Necesita algún código del método Factory!

    –Wesley van Opdorp

    1 de septiembre de 2011 a las 6:59

  • Además, debe cuidar los clientes de correo electrónico de destino. Incluso si logra ver el correo electrónico correctamente en su cliente de correo electrónico, no significa que su cliente verá el correo correcto. Al final, siempre construyo correos electrónicos html con encabezado de juego de caracteres utf-8. De esta manera, la mayoría de los clientes de correo electrónico muestran el contenido correctamente.

    – marco

    1 de septiembre de 2011 a las 7:05

  • @FlyBy: sí, eso es exactamente lo que quiero hacer, mostrar el contenido con el juego de caracteres utf-8, pero aún no puedo ver el correo electrónico correctamente.

    – deepWebMie

    1 de septiembre de 2011 a las 7:32

  • Content-Type y charset son precisamente lo que necesita para que esto funcione, pero debe brindarnos más información. ¿Puedes mostrarnos el código? y/o la fuente del mensaje resultante? ¿Estás seguro de que tus datos están codificados correctamente en utf8?

    – triplete

    1 de septiembre de 2011 a las 7:44


  • aquí está mi código de ejemplo: $mail = Mail::factory("mail"); $to = "me@abc.com"; $body = "好信"; $headers = array("Content-type =>"text/plain: charset=\"UTF-8","From" => "abc@abc.com","To" => "me@abc.com","Subject" => "Test Send Chinese mail-好信"); $mail->send($to, $headers, $body); ¿Es esto correcto? No muestra lo que espero. Debe mostrar la palabra china en el cuerpo, el encabezado o incluso el tema.

    – deepWebMie

    1 de septiembre de 2011 a las 8:04


1646750348 857 ¿Como enviar un correo electronico UTF 8
s.webbandit

Puede agregar el encabezado “Content-Type: text/html; charset=UTF-8” al cuerpo de su mensaje.

$headers = "Content-Type: text/html; charset=UTF-8";

Si usas nativo mail() La función $headers array será el cuarto parámetro.
mail($to, $subject, $message, $headers)

Si usa PEAR Mail::factory(), el código será:

$smtp = Mail::factory('smtp', $params);

$mail = $smtp->send($to, $headers, $body);

  • aquí está mi código $mail = Mail::factory(“mail”); $a = “yo@abc.com”; $cuerpo = “好信”; $headers = array(“Content-type =>”text/plain: charset=\”UTF-8″,”From” => “abc@abc.com”,”To” => “me@abc.com” ,”Asunto” => “Prueba Enviar correo chino-好信”); $mail->send($to, $headers, $body) ¿Es esto correcto? No muestra lo que espero. Debe mostrar la palabra china en el cuerpo, el encabezado o incluso el tema.

    – deepWebMie

    1 de septiembre de 2011 a las 8:01

  • ¿Qué herramientas de correo electrónico todavía utilizan la codificación de transferencia de 7 bits?

    – Grodríguez

    6 de febrero de 2015 a las 9:58

  • El cuarto parámetro de php mail() es una cadena, no una matriz!!

    – Vladimir Panteleev

    17/10/2015 a las 10:47

  • Asegúrate de escribir charset=UTF-8 sin comillas alrededor UTF-8!

    – Derretir

    17 de noviembre de 2015 a las 12:45

  • Uso único text/html si está enviando un correo electrónico en formato HTML. Para correos electrónicos de texto sin formato, desea text/plain.

    – Estuardo

    30/09/2016 a las 22:20

Estoy usando un conjunto de caracteres bastante específico (ISO-8859-2) porque no todos los sistemas de correo (por ejemplo: http://10minutemail.com) puede leer correos UTF-8. Si necesitas esto:

function utf8_to_latin2($str)
{
    return iconv ( 'utf-8', 'ISO-8859-2' , $str );
}
function my_mail($to,$s,$text,$form, $reply)
    {
        mail($to,utf8_to_latin2($s),utf8_to_latin2($text),
        "From: $form\r\n".
        "Reply-To: $reply\r\n".
        "X-Mailer: PHP/" . phpversion());
    }

He creado otra función de correo, porque el dispositivo Apple no podía leer bien la versión anterior.

function utf8mail($to,$s,$body,$from_name="x",$from_a = "info@x.com", $reply="info@x.com")
{
    $s= "=?utf-8?b?".base64_encode($s)."?=";
    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
    $headers.= "Content-Type: text/plain;charset=utf-8\r\n";
    $headers.= "Reply-To: $reply\r\n";  
    $headers.= "X-Mailer: PHP/" . phpversion();
    mail($to, $s, $body, $headers);
}

  • ¿Y si intenta enviar contenido que no se puede representar en ISO-8859-2?

    – deceze

    14 de julio de 2015 a las 15:12

  • $headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n"; esta línea resolvió mi problema, ¡gracias!

    – Julia

    4 de diciembre de 2015 a las 7:17

  • Considere la codificación imprimible entre comillas para la legibilidad en los correos de texto sin formato, es igual de simple: '=?utf-8?Q?' . quoted_printable_encode($string) . '?='

    – Citando a Eddie

    17/04/2016 a las 17:45


  • @Julia Gracias, yo también.

    – fdrv

    25 de abril de 2016 a las 2:29

  • ¿Qué pasa con CC y CCO?

    – toscano

    5 de abril de 2017 a las 22:04

¿Como enviar un correo electronico UTF 8
vml vml

Que no HTMLluego UTF-8 no es recomendado. koi8-r y windows-1251 solo que sin problemas. Así que usa el correo html.

$headers['Content-Type']='text/html; charset=UTF-8';
$body='<html><head><meta charset="UTF-8"><title>ESP Notufy - ESP Сообщения</title></head><body>'.$text.'</body></html>';


$mail_object=& Mail::factory('smtp',
    array ('host' => $host,
        'auth' => true,
        'username' => $username,
        'password' => $password));
$mail_object->send($recipents, $headers, $body);
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad