Corrija o erro "Endereço inválido", após atualizar para o Joomla 3.5.1

10

Após a atualização para o Joomla 3.5.1, recebo um Invalid Addresserro em algumas das minhas extensões que usam o PHPMailer (o sistema de correio do Joomla).

Como posso consertar isso?

mavrosxristoforos
fonte

Respostas:

16

Resposta para usuários:

Se você está recebendo esse erro porque está usando alguma extensão que envia e-mails, visite a página do desenvolvedor e primeiro verifique se está usando a versão mais recente .

Se você tem 100% de certeza de que está usando a versão mais recente, mas ainda está recebendo esse erro, entre em contato com o desenvolvedor e pergunte a ele sobre esse erro. O envio de um link para esta página pode ajudar o desenvolvedor a corrigir esse erro .

Se você se considera experiente o suficiente em PHP, pode tentar corrigir o código por conta própria, usando a "resposta para desenvolvedores", abaixo.

Observe que essa não será uma solução permanente, mas apenas um "patch", até que o desenvolvedor emita uma nova versão.

Resposta para desenvolvedores:

O Joomla 3.5.1 habilita as exceções do PHPMailer por padrão. Assim, os erros que foram ocultados anteriormente aparecem.

Um caso em que isso mostra agora é com a addReplyTofunção

No Joomla 2.5 addReplyTohavia um parâmetro de matriz.

Começando com o Joomla 3.0 ( sim, em 2012 ), a função JMail do Joomla mudou para não manipular matrizes de maneira diferente dos parâmetros da string. Portanto, ele se baseou no código subjacente do PHPMailer, que também foi alterado e, portanto, falha ao adicionar o Reply-To corretamente.

O PHPMailer lança uma exceção para isso, porém até o Joomla 3.5.1 ninguém viu essa exceção se você não ativou o tratamento de exceções manualmente!

Solução

Você pode procurar no código de extensão addReplyToe alterar linhas como esta:

 $mailer->addReplyTo(array($replyTo, $replyToName));

para isso:

if(version_compare(JVERSION, '3.0', 'ge')) {
  $mailer->addReplyTo($replyTo, $replyToName);
} else {
  $mailer->addReplyTo(array($replyTo, $replyToName));
}

Além disso, você deseja adicionar o try {} catch() {}código conforme necessário para lidar com a exceção vinda do JMail / PHPMailer.

Mais Informações:

Discussão sobre o assunto no Github

Tópico relevante nos fóruns do Joomla

mavrosxristoforos
fonte
1
Bom achado. Desejo Joomla desde páginas como esta para suas atualizações
Lodder
2
De acordo com a edição feita pelo hbit, esse é um problema desde o Joomla 3.0. No entanto, posso confirmar que, até o Joomla 3.5, esse problema não ocorre com nenhum formulário usando o código antigo.
Mavrosxristoforos
3

Também recebi esse erro quando a variável $ replyTo estava vazia e precisei usar

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
GreyHead
fonte