¿Codificación de caracteres Postfix?

¿Codificación de caracteres Postfix?

Utilizo Postfix como servidor de correo. Tengo el sistema operativo Ubuntu.

Luego uso PHP para enviar correos electrónicos.

El problema es que ninguno de mis correos electrónicos está codificado correctamente por un software de correo que utiliza mi proveedor de VPS.

Según ellos, el problema está en mí.

Es sólo el campo de nombre el que no está codificado correctamente. Por ejemplo, "Björn" se convierte en "Björn" en mis correos electrónicos.

Sin embargo, cuando hago eco del mensaje $name, aparece "Bjorn" cual es correcta.

Además gmail y hotmail sí lo muestran correctamente.

Lo extraño es que el "texto" (el mensaje en sí) está codificado correctamente.

Utilizo lo siguiente para enviar correo:

$headers="MIME-Version: 1.0"."\n";
$headers.="Content-type: text/plain; charset=UTF-8"."\n";
$headers.="From: $name <$email>"."\n";

$name=  iconv(mb_detect_encoding($name), "UTF-8//IGNORE//TRANSLIT", $name);
//// I HAVE TRIED WITH AND WITHOUT THE LINE ABOVE, NO DIFFERENCE            

mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $text, $headers, '[email protected]'); 

También lo intenté con y sin la línea iconv, pero no tuve suerte.

Lo último que puedo pensar esSUFIJO, ¿podría haber una configuración para la codificación de caracteres allí? ¿Cualquiera sabe?

Respuesta1

El texto del mensaje puede tener cualquier conjunto de caracteres que usted defina (porque define el conjunto de caracteres para el correo en el encabezado del correo (tipo de contenido = utf8), pero los encabezados (asunto, de - nombre, correo electrónico) se definen en el cliente que está leyendo el correo electrónico, por lo que no puede afectar eso. Gmail usa utf8 como valor predeterminado, mientras que otros clientes que ven los correos electrónicos pueden usar lo que quieran y básicamente solo los caracteres ASCII son totalmente compatibles en todas partes.

Editar: puede tener caracteres fuera de US-ASCII en el encabezado del mensaje si están codificados en MIME ("=?charset?encoding?encoded text?=")

Respuesta2

Un problema que veo es que has convertido $namea UTF-8.despuésincrustándolo en el $headers. Entonces, lo que se envía a postfix es lo que había allí antes. Deberías iconv()hacerlo y agregarle la codificación MIME.antesagregándolo a $headers.

información relacionada