Ticket #528 (closed defeito: fixed)
Problema de charset nos campos Sender, From, To, CC.
Reported by: | niltonneto | Owned by: | alexandrecorreia |
---|---|---|---|
Priority: | grave | Milestone: | Expresso 2.0 |
Component: | ExpressoMail | Version: | trunk |
Severity: | Keywords: | ||
Cc: | WorkGroup: |
Description
Quando emails externos chegam no Expresso, e um dos campos "Sender", "From", "To", "CC" já possuem o charset informado, o Expresso não mostra corretamente o endereço de email. Um exemplo é uma mensagem que veio com o "From" da seguinte forma
From: =?utf-8?B?4YOx766o76+d766o4oCi4oCiwrvPgc6xdeKEk2nOt9C9z4PCqyDigKLigKLv?= =?utf-8?B?rqjvr53vrqjhg7H=?= <fulano@…>
Solução: Acredito que aplicando o método decode_string(), da classe imap_functions, sobre esses atributos da mensagem, resolva esse problema.
Attachments
Change History
comment:2 in reply to: ↑ 1 Changed 15 years ago by niltonneto
Replying to rodsouza:
Tem um e-mail de exemplo?
Faça assim: Edite lá no Cyrus o arquivo de algum mensagem, e coloque o from como foi relatado acima. Limpe o cyrus.* da pasta corrente da caixa postal e/ou rode um reconstruct.
comment:4 Changed 15 years ago by rodsouza
Atualmente o "não mostrar corretamente" significa:
ჱﮨï¯ï®¨â€¢â€¢Â»Ïαuâ„“iηнσ« ••ï
Entretanto essa string está em UTF-8 e o restante em ISO-8859-1.
Deveria estar aparecendo:
ჱﮨﯝﮨ••»ραuℓiηнσ« ••� ��ﯝﮨჱ
A alteração de UTF-8 para ISO-8859-1 produz o seguinte:
??????�??u?i???� ???��???
Constata-se que apenas os caracteres "u" e "i" estão presente em todas as apresentações.
O campo "From" foi alterado, conforme acima, para melhor analise.
Committed revision r1376.
comment:5 follow-up: ↓ 6 Changed 15 years ago by niltonneto
- Owner changed from alguem to niltonneto
Observado o comportamento do método decode_string(), percebi que este analisa o array retornado pela função nativa imap_mime_header_decode($str), onde $str é a string em questão. O que acontece é que, nesse caso, decode_string detecta o charset "UTF-8" em uma das partes da string e então executa a função iconv() para converter para "ISO-8859-1". Em seguida, usa o método htmlspecialschars_encode que não consegue retornar o resultado esperado. O que fiz foi apenas implementar um método na classe "functions", para que retorne corretamente qualquer caracter no formato HTML, quando for UTF-7 ou UTF-8. Para os demais charsets, o conjunto iconv+htmlspecialchars_encode é executado. Conforme os anexos, deu certo. Vou efetuar o commit para que todos possam ajudar a validar essa correção.
comment:6 in reply to: ↑ 5 Changed 15 years ago by niltonneto
Replying to niltonneto:
Observado o comportamento do método decode_string(), percebi que este analisa o array retornado pela função nativa imap_mime_header_decode($str), onde $str é a string em questão. O que acontece é que, nesse caso, decode_string detecta o charset "UTF-8" em uma das partes da string e então executa a função iconv() para converter para "ISO-8859-1". Em seguida, usa o método htmlspecialschars_encode que não consegue retornar o resultado esperado. O que fiz foi apenas implementar um método na classe "functions", para que retorne corretamente qualquer caracter no formato HTML, quando for UTF-7 ou UTF-8. Para os demais charsets, o conjunto iconv+htmlspecialchars_encode é executado. Conforme os anexos, deu certo. Vou efetuar o commit para que todos possam ajudar a validar essa correção.
Implementado em [1384].
comment:7 follow-ups: ↓ 8 ↓ 9 Changed 15 years ago by alexandre.arakaki
Reproduzi o erro conforme indicado, utilizando a revisão [1397], abaixo passo as informações obtidas:
- Na lista de mensagens está Ok, mostrando ჱﮨﯝﮨ••»ραuℓiηнσ« ••� ��ﯝﮨჱ
- Já dentro da mensagem não está mostrando o nome do remetente, aparece apenas os tres pontos "..."
comment:8 in reply to: ↑ 7 Changed 15 years ago by niltonneto
Replying to alexandre.arakaki:
Reproduzi o erro conforme indicado, utilizando a revisão [1397], abaixo passo as informações obtidas:
- Na lista de mensagens está Ok, mostrando ჱﮨﯝﮨ••»ραuℓiηнσ« ••� ��ﯝﮨჱ
- Já dentro da mensagem não está mostrando o nome do remetente, aparece apenas os tres pontos "..."
Que estranho. Não ficou conforme o anexo "namensagem.jpg"? Poderia anexar o pedaço da sua tela?
comment:9 in reply to: ↑ 7 Changed 15 years ago by alexandrecorreia
Replying to alexandre.arakaki:
Reproduzi o erro conforme indicado, utilizando a revisão [1397], abaixo passo as informações obtidas:
- Na lista de mensagens está Ok, mostrando ჱﮨﯝﮨ••»ραuℓiηнσ« ••� ��ﯝﮨჱ
- Já dentro da mensagem não está mostrando o nome do remetente, aparece apenas os tres pontos "..."
Alexandre Arakaki, por favor teste agora com a revisao [1401].
comment:10 Changed 15 years ago by niltonneto
Alexandre Arakaki, estamos aguardando seu teste para fecharmos esse ticket. Obrigado.
Changed 15 years ago by alexandre.arakaki
- attachment trespontos_dentrodamsg.jpg added
No lugar do nome aparecem tres pontos "..."
comment:12 Changed 15 years ago by alexandre.arakaki
Ainda continua não aparecendo o nome... (ver anexo acima)
comment:13 follow-up: ↓ 14 Changed 15 years ago by rodsouza
- Owner changed from alexandre.arakaki to alexandrecorreia
comment:14 in reply to: ↑ 13 ; follow-up: ↓ 15 Changed 15 years ago by alexandrecorreia
Revisão [1416]
comment:15 in reply to: ↑ 14 ; follow-up: ↓ 16 Changed 15 years ago by niltonneto
Replying to alexandrecorreia:
Revisão [1416]
Eu testei aqui e funcionou. Alexandre Arakaki, poderia testar novamente?
comment:16 in reply to: ↑ 15 Changed 15 years ago by alexandre.arakaki
Replying to niltonneto:
Replying to alexandrecorreia:
Revisão [1416]
Eu testei aqui e funcionou. Alexandre Arakaki, poderia testar novamente?
Beleza galera.
Os testes por aqui deram certo.
comment:17 Changed 15 years ago by niltonneto
- Status changed from new to closed
- Resolution set to fixed
Tem um e-mail de exemplo?