Após a atualização para o Joomla 3.5.1, recebo um Invalid Address
erro em algumas das minhas extensões que usam o PHPMailer (o sistema de correio do Joomla).
Como posso consertar isso?
Após a atualização para o Joomla 3.5.1, recebo um Invalid Address
erro em algumas das minhas extensões que usam o PHPMailer (o sistema de correio do Joomla).
Como posso consertar isso?
Respostas:
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.
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 addReplyTo
função
No Joomla 2.5 addReplyTo
havia 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 addReplyTo
e 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: