Ticket #528 (closed defeito: fixed)

Opened 15 years ago

Last modified 15 years ago

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

nalista.jpg Download (8.1 KB) - added by niltonneto 15 years ago.
Resolvido para lista de mensagens.
namensagem.jpg Download (12.4 KB) - added by niltonneto 15 years ago.
Resolvido dentro da mensagem
trespontos_dentrodamsg.jpg Download (28.3 KB) - added by alexandre.arakaki 15 years ago.
No lugar do nome aparecem tres pontos "..."

Change History

comment:1 follow-up: ↓ 2 Changed 15 years ago by rodsouza

Tem um e-mail de exemplo?

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:3 Changed 15 years ago by wmerlotto

  • Milestone set to Expresso 2.0

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.

Changed 15 years ago by niltonneto

Resolvido para lista de mensagens.

Changed 15 years ago by niltonneto

Resolvido dentro da mensagem

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.

comment:11 Changed 15 years ago by niltonneto

  • Owner changed from niltonneto to alexandre.arakaki

Changed 15 years ago by alexandre.arakaki

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
Note: See TracTickets for help on using tickets.