Pergunta

Eu tenho um assunto do email do formulário:

=?utf-8?B?T3.....?=

O corpo do email é base64 codificação UTF-8 - e decodificou bem. Estou atual usando e-mail do Perl :: módulo MIME para decodificar o e-mail.

O que é o significado da =? Utf-8 delimitador e como faço para extrair informações a partir desta corda?

Foi útil?

Solução

O encoded-word fichas (como por RFC 2047 ) pode ocorrer em valores de alguns cabeçalhos. Eles são analisados ??como segue:

=?<charset>?<encoding>?<data>?=

Codificação é UTF-8, neste caso, a codificação é B que significa base64 (a outra opção é que Q meios citado para impressão).

Para lê-lo, primeiro decodificar o base64, então tratá-lo como caracteres UTF-8.

Leia também as várias RFCs Internet mail para mais detalhes, principalmente RFC 2047 .

Uma vez que você estiver usando Perl, Encode :: MIME :: Header poderia ser de uso:

Sinopse

use Encode qw/encode decode/;
$utf8   = decode('MIME-Header', $header);
$header = encode('MIME-Header', $utf8);

RESUMO

Esta implementos módulo RFC 2047 Mime Header Encoding. Há 3 variante codificação de nomes; MIME-Header, MIME-B e MIME-Q. A diferença é descrito abaixo

              decode()          encode()  
MIME-Header   Both B and Q      =?UTF-8?B?....?=  
MIME-B        B only; Q croaks  =?UTF-8?B?....?=  
MIME-Q        Q only; B croaks  =?UTF-8?Q?....?=

Outras dicas

Eu acho que as alças módulo Encode que com a codificação MIME-Header, então tente o seguinte:

use Encode qw(decode);
my $decoded = decode("MIME-Header", $encoded);

Confira RFC2047 . Os meios 'B' que a parte entre os dois últimos '?' S é codificado em Base64. O 'utf-8' significa, naturalmente, que os dados decodificados deve ser interpretada como UTF-8.

MIME :: Palavras de MIME-ferramentas funcionam bem também para isso. Corri para algum problema com Encode e encontrou MIME :: Palavras sucedido em algumas cordas onde Encode não.

use MIME::Words qw(:all);
$decoded = decode_mimewords(
    'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>',
);

Trata-se de uma extensão padrão para rotulagem de conjunto de caracteres de cabeçalhos, indicados na RFC2047 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top