Joomla 3.5.1にアップグレードした後、Invalid Address
PHPMailer(Joomlaメーリングシステム)を使用する拡張機能の一部でエラーが発生しました。
どうすれば修正できますか?
メールを送信する拡張機能を使用しているためにこのエラーが発生する場合は、開発者ページにアクセスして、最初に最新バージョンを使用していることを確認してください 。
最新バージョンを使用していることを100%確信しているにもかかわらず、このエラーが発生する場合は、開発者に連絡して、このエラーについて問い合わせてください。 このページへのリンクを送信すると、開発者がこのエラーを修正するのに役立ちます。
PHPを十分に経験していると思われる場合は、以下の「開発者向けの回答」を使用して、自分でコードにパッチを適用してみてください。
これは永続的な解決策ではなく、開発者が新しいバージョンを発行するまでの単なる「パッチ」であることに注意してください。
Joomla 3.5.1はデフォルトでPHPMailerの例外を有効にします。したがって、以前は隠されていたエラーが表示されます。
これが示す1つのケースは、addReplyTo
関数です。
Joomla 2.5では、addReplyTo
に配列パラメーターがありました。
Joomla 3.0以降( はい、2012年に戻って )JoomlaのJMail関数は、文字列パラメーターとは異なる配列を処理しないように変更されました。したがって、基礎となるPHPMailerコードに依存していましたが、これも変更されたため、Reply-Toを正しく追加できませんでした。
PHPMailerはそのために例外をスローしますが、手動で例外処理を有効にしないと、Joomla 3.5.1までは誰もその例外を確認できませんでした。
ソリューション
拡張コードでaddReplyTo
を検索して、次のような行を変更できます。
_ $mailer->addReplyTo(array($replyTo, $replyToName));
_
これに:
_if(version_compare(JVERSION, '3.0', 'ge')) {
$mailer->addReplyTo($replyTo, $replyToName);
} else {
$mailer->addReplyTo(array($replyTo, $replyToName));
}
_
さらに、JMail/PHPMailerからの例外を処理するために、必要に応じてtry {} catch() {}
コードを追加します。
詳しくは:
$ replyTo変数が空で、使用する必要があった場合にも、このエラーが発生しました
if ( !empty($replyTo) ) {
$mailer->addReplyTo($replyTo, $replyToName);
}