Ticket #859 (closed defeito: fixed)

Opened 14 years ago

Last modified 14 years ago

Substituição de links (url & e-mail) causa problema na visualização do e-mail

Reported by: rodsouza Owned by: rodsouza
Priority: média Milestone: Expresso 2.0.4
Component: ExpressoMail Version: branch 2.0
Severity: Keywords: links url e-mail visualização problema
Cc: WorkGroup:

Description

Substituição de links (url & e-mail) causa problema na visualização do e-mail.

As expressões regulares presente no método replace_links da classe class.imap_function.inc.php a muitos casos, além de que em algumas situações as mesmas não conseguem trabalhar em conjunto.

As expressões regulares não trabalham em conjunto, por exemplo, quando uma url possui um e-mail em seu contexto.

Change History

comment:1 Changed 14 years ago by rodsouza

Ao realizar testes da modificação do método citado sugiu uma alteração pontual no método get_body_msg quando o e-mail é multipart.

comment:2 Changed 14 years ago by rodsouza

As expressões regulares presente no método replace_links foram altaredas para:

        // All links should be moderated and they should only have the attribute 'target="blank"'.
        $pattern = '/<a[^>]+href="([^>"]+)"[^>]*>(.*)<\/a>/im';
        $replacement = '<a href="$1" target="_blank">$2</a>';
        $body = preg_replace( $pattern, $replacement, $body );

        // Url found in the text and which is not a link yet should be replaced by one.
        $pattern = '/(^|\w>|[ \(\[])((http(s)?:\/\/)?([\w\d_\-@]{2,}(\.[\w\d~?\/_=&#;\-:@$]+)+))/im';
        $replacement = '$1<a href="http$4://$5" target="_blank">$2</a>';
        $body = preg_replace( $pattern, $replacement, $body );

        // E-mail address in the text should create a new e-mail on ExpressoMail
        $pattern = '/( |<|&lt;|>)([A-Za-z0-9\.~?\/_=#\-]*@[A-Za-z0-9\.~?\/_=#\-]*)( |>|&gt;|<)/im';
        $replacement = '$1<a href="javascript:new_message_to(\'$2\')">$2</a>$3';
        $body = preg_replace( $pattern, $replacement, $body );

        // If there is an link with a "mailto:" in href attribute, it will changed to create a new e-mail on ExpressoMail.
        $pattern = '/<a[^>]+href=["\']mailto:([^"]+)["\'][^>]*>([^<]+)<\/a>/im';
        $replacement = '<a href="javascript:new_message_to(\'$1\')">$2</a>';
        $body = preg_replace( $pattern, $replacement, $body );

comment:3 Changed 14 years ago by rodsouza

Observou-se que após as alterações todas as possíveis url, assim como os endereços de e-mail, são encontrados e a ação desejada é aplicada.

O fator adverso é possíveis cadeias de caracteres que não representam um endereço eletrônico como por exemplo possivel.Se. Essa sentença foi observada em um e-mail que o remetente foi desatento em não colocar o espaço necessário entre as palavras. Outro exemplo é números como 93.07 ou 3200.0000 que são considerados urls.

comment:4 Changed 14 years ago by rodsouza

  • Status changed from new to closed
  • Resolution set to testing

Alterado a forma de manipular links para a visualização do e-mail.

inc/class.imap_functions.inc.php

Committed revision r1897.

comment:5 Changed 14 years ago by rodsouza

  • Priority changed from grave to pequena

Refinamento da expressão regular que busca por URLs no corpo do e-mail.

class.imap_functions.inc.php

Committed revision r2039.

comment:6 Changed 14 years ago by rodsouza

Refinamento da expressão regular que busca por URLs no corpo do e-mail.

Os links não eram substituídos em e-mails no formato texto puro que possuem inadvertidamente tags HTML.

class.imap_functions.inc.php

Committed revision r2041

comment:7 Changed 14 years ago by amuller

r2045 Corrige quebra de formatação em alguns emails, só pelo desculpa pelo comentário da revisão que cometi um equívoco

comment:8 Changed 14 years ago by amuller

r2052 tem nova implementação

comment:9 Changed 14 years ago by amuller

r2059 Só aceita ips válidos e TLDs válidos.

comment:10 Changed 14 years ago by niltonneto

  • Priority changed from pequena to média
  • Status changed from closed to reopened
  • Version changed from trunk to branch 2.0
  • Resolution testing deleted
  • Milestone changed from Expresso 2.1 to Expresso 2.0.4

Replicado nos Branches 2.0 [2100] e 2.1 [2101]. Alguém mais testou? Podemos fechar esse ticket?

comment:11 Changed 14 years ago by amuller

Por mim ta ok!

comment:12 Changed 14 years ago by niltonneto

  • Status changed from reopened to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.