Ticket #1915 (closed defeito: fixed)
Email perde formatação
Reported by: | guilherme.silva | Owned by: | zapa |
---|---|---|---|
Priority: | normal | Milestone: | Expresso 2.4.0 |
Component: | ExpressoMail | Version: | trunk |
Severity: | média | Keywords: | SERPRO |
Cc: | WorkGroup: |
Description
Email perde formatação (incluir o anexo eml).
Attachments
Change History
comment:2 Changed 13 years ago by zapa
Este problema ocorre em emails oriundos do MS-Outlook.
Na verdade são dois problemas:
1.A clausula text-indent, no corpo do email não respeitada na visualização do expresso está tratada no ticket #1914.
2.O problema maior é a retirada dos SPAN - Retira coisas a mais do que as vezes deve, em consequência o email perde formatação(ou até conteúdo). Se não me engano esta retirada dos spans fora em função de bug que provocava o fechamento do FF sob Ubuntu em função de plugin java instalado.
Não havendo solução definitiva, sempre haverá problemas, seja em retirar os Span(em prejuízo da visualização de emails) ou mante-los e fechar alguns browsers que abrem determinados emails com estas características.
comment:3 follow-up: ↓ 4 Changed 13 years ago by wmerlotto
Zapa, temos uma sugestão de correção, conforme este diff:
-
expresso/trunk/expressoMail1_2/inc/class.imap_functions.inc.php
1423 1423 $body = str_replace($rest[1][$i],"<".$rest[2][$i].$rest[3][$i].$rest[7][$i].">",$body); 1424 1424 } 1425 1426 //$body = $this->replace_links($body); 1427 1428 //Remoção de tags <span></span> para correção de erro no firefox 1429 $body = mb_eregi_replace("<span><span>", "", $body); 1430 $body = mb_eregi_replace("</span></span>", "",$body);1431 1425 1426 /* 1427 * Remove deslocamento a esquerda colocado pelo Outlook em paragrafos com marcadores. 1428 * Este delocamento faz com que algumas palavras fiquem escondidas atras da barra lateral do expresso. 1429 */ 1430 $body = mb_ereg_replace("(<p[^>]*)(text-indent:-18.0pt;)([^>]*>)","\\1\\3",$body); 1431 1432 1432 //Correção para compatibilização com Outlook, ao visualizar a mensagem 1433 1433 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 1434 1434 $body = mb_ereg_replace('<!\[endif\]-->', '<![endif]-->', $body); 1435 1435 1436 return "<div class=\"$wrapper_class\" ><span>".$body.'</span></div>';1436 return "<div class=\"$wrapper_class\" ><span>".$body.'</span></div>'; 1437 1437 }
comment:4 in reply to: ↑ 3 Changed 13 years ago by brunocosta
Foi exatamente isso que eu fiz aqui, mas retirando todo text-indent (usando preg_replace("/text-indent:.*;/i","", $body);).
Mas ainda existe o problema dos spans ($body = mb_eregi_replace("<span><span>", "", $body); e $body = mb_eregi_replace("</span></span>", "", $body);) que nesse email em especifico fazem uma formatação que deveria se aplicar em pequeno SPAN ser aplicado num SPAN que é o parágrafo todo, o que é um problema porque essa formatação troca a fonte para uma que só tem símbolos (Wingdings) o que deixa o email ilegível.
Replying to wmerlotto:
Zapa, temos uma sugestão de correção, conforme este diff:
expresso/trunk/expressoMail1_2/inc/class.imap_functions.inc.php
1423 1423 $body = str_replace($rest[1][$i],"<".$rest[2][$i].$rest[3][$i].$rest[7][$i].">",$body); 1424 1424 } 1425 1426 //$body = $this->replace_links($body); 1427 1428 //Remoção de tags <span></span> para correção de erro no firefox 1429 $body = mb_eregi_replace("<span><span>", "", $body); 1430 $body = mb_eregi_replace("</span></span>", "",$body);1431 1425 1426 /* 1427 * Remove deslocamento a esquerda colocado pelo Outlook em paragrafos com marcadores. 1428 * Este delocamento faz com que algumas palavras fiquem escondidas atras da barra lateral do expresso. 1429 */ 1430 $body = mb_ereg_replace("(<p[^>]*)(text-indent:-18.0pt;)([^>]*>)","\\1\\3",$body); 1431 1432 1432 //Correção para compatibilização com Outlook, ao visualizar a mensagem 1433 1433 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 1434 1434 $body = mb_ereg_replace('<!\[endif\]-->', '<![endif]-->', $body); 1435 1435 1436 return "<div class=\"$wrapper_class\" ><span>".$body.'</span></div>';1436 return "<div class=\"$wrapper_class\" ><span>".$body.'</span></div>'; 1437 1437 }
comment:5 follow-up: ↓ 6 Changed 13 years ago by wmerlotto
Maravilha!
Quanto ao "span", creio que o e-mail deve ser interpretado da forma mais original possível, sem remover ou substituir nada, ou o mínimo possível.
Neste caso, vejo a única alternativa é remover esse código (mb_eregi_replace("<span><span>", "", $body)) e testar! Revisar a lista de mensagens problemáticas e verificar se os e-mails são visualizados corretamente.
comment:6 in reply to: ↑ 5 Changed 13 years ago by brunocosta
Replying to wmerlotto:
Maravilha!
Quanto ao "span", creio que o e-mail deve ser interpretado da forma mais original possível, sem remover ou substituir nada, ou o mínimo possível.
Neste caso, vejo a única alternativa é remover esse código (mb_eregi_replace("<span><span>", "", $body)) e testar! Revisar a lista de mensagens problemáticas e verificar se os e-mails são visualizados corretamente.
O problema é que esses <span> são retirados com um proposito, devito a um bug na implementação mais nova do plugin do java no firefox do linux quando uma pagina tem muitos níveis de tags ele fecha o browser, e isso acontece muito com spans por causa do editor. Aqui no serpro nos resolvemos mudando a implementação do plugin do java para a antiga.
comment:7 Changed 13 years ago by zapa
- Milestone changed from Expresso 2.2.6 to Expresso 2.2.0.2
Coloquei para o próximo milestone continuar a discussão visto que os spans permanecem, e retirando-os fica sujeito a desformatação.
comment:8 Changed 13 years ago by cristiano
Acho que seria mais interessante manter a expressão regular “mb_ereg_replace("(<p[>]*)(text-indent:-18.0pt;)([>]*>)","
1
3",$body);” ao invés da “preg_replace("/text-indent:.*;/i","", $body);”, pois esta segunda acaba retirando todos os text-ident do e-mail, diferente da primeira que só retira os text-ident inseridos nos parágrafos pelo MS Outlook. (Quanto ao valor -18, eu confirmei no Outlook independente do tamanho da fonte, o valor é o mesmo).
Retirar todos os text-ident do e-mail pode comprometer outras formatações que não estão com problemas.