Codificação de caracteres Postfix?

Codificação de caracteres Postfix?

Eu uso o Postfix como servidor de e-mail. Eu tenho o sistema operacional Ubuntu.

Então eu uso PHP para enviar e-mails.

O problema é que nenhum dos meus e-mails é codificado corretamente por um software de e-mail usado pelo meu provedor VPS.

Segundo eles, o problema é meu.

É apenas o campo do nome que não está codificado corretamente. Por exemplo, "Björn" se torna "Björn" em meus e-mails.

No entanto, quando eu faço eco do $name, ele gera "Bjorn" qual é correto.

Além disso, o Gmail e o Hotmail mostram isso corretamente.

A parte estranha é que o “texto” (a própria mensagem) está codificado corretamente.

Eu uso o seguinte para enviar e-mail:

$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]'); 

Eu tentei com e sem a linha iconv também, sem sorte.

A última coisa que consigo pensar éPOSTFIX, poderia haver uma configuração para codificação de caracteres lá? Alguém sabe?

Responder1

O texto da mensagem pode ser qualquer conjunto de caracteres que você definir (porque você define o conjunto de caracteres para o e-mail no cabeçalho do e-mail (tipo de conteúdo = utf8), mas os cabeçalhos (assunto, de - nome, e-mail) são definidos no cliente que está lendo o e-mail, então você não pode afetar isso. O Gmail está usando utf8 como padrão, enquanto outros clientes que estão visualizando os e-mails podem usar o que quiserem e basicamente apenas caracteres ASCII são totalmente suportados em todos os lugares.

Editar: você pode ter caracteres fora do US-ASCII no cabeçalho da mensagem se eles forem codificados em MIME ("=?charset?encoding?encoded text?=")

Responder2

Um problema que vejo é que você converteu $namepara UTF-8depoisincorporando-o no $headers. Então, o que está sendo enviado para o postfix é o que estava lá antes. Você deveria iconv()e adicionar a codificação MIME a eleantesadicionando-o em $headers.

informação relacionada