web-dev-qa-db-ja.com

Joomla 3.5.1にアップグレードした後、「無効なアドレス」エラーを修正

Joomla 3.5.1にアップグレードした後、Invalid Address PHPMailer(Joomlaメーリングシステム)を使用する拡張機能の一部でエラーが発生しました。

どうすれば修正できますか?

10

ユーザーへの回答:

メールを送信する拡張機能を使用しているためにこのエラーが発生する場合は、開発者ページにアクセスして、最初に最新バージョンを使用していることを確認してください

最新バージョンを使用していることを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() {}コードを追加します。

詳しくは:

Githubでの問題のディスカッション

Joomlaフォーラムの関連トピック

16

$ replyTo変数が空で、使用する必要があった場合にも、このエラーが発生しました

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