Perbaiki kesalahan "Alamat Tidak Valid", setelah memutakhirkan ke Joomla 3.5.1

10

Setelah memutakhirkan ke Joomla 3.5.1, saya mendapatkan Invalid Addresskesalahan di beberapa ekstensi saya yang menggunakan PHPMailer (sistem Mailing Joomla).

Bagaimana saya bisa memperbaikinya?

mavrosxristoforos
sumber

Jawaban:

16

Jawaban untuk Pengguna:

Jika Anda mendapatkan kesalahan ini karena Anda menggunakan beberapa ekstensi yang mengirim email, silakan kunjungi halaman pengembang, dan pertama - tama pastikan Anda menggunakan versi terbaru .

Jika Anda 100% yakin bahwa Anda menggunakan versi terbaru, tetapi masih mendapatkan kesalahan ini, Anda harus menghubungi pengembang dan bertanya kepada mereka tentang kesalahan ini. Mengirimkan mereka tautan ke halaman ini, dapat membantu pengembang untuk memperbaiki kesalahan ini .

Jika Anda merasa cukup berpengalaman dengan PHP, Anda dapat mencoba menambal kode sendiri, menggunakan "jawaban untuk pengembang", di bawah ini.

Harap dicatat bahwa ini bukan solusi permanen, tetapi hanya "tambalan", sampai pengembang mengeluarkan versi baru.

Jawaban untuk Pengembang:

Joomla 3.5.1 mengaktifkan pengecualian PHPMailer secara default. Dengan demikian kesalahan yang sebelumnya tersembunyi muncul.

Satu kasus di mana ini menunjukkan sekarang adalah dengan addReplyTofungsinya.

Di Joomla 2.5 addReplyTomemiliki parameter array.

Dimulai dengan Joomla 3.0 ( ya, kembali pada tahun 2012 ) Fungsi JMail Joomla berubah menjadi tidak menangani array berbeda dari parameter string. Jadi itu bergantung pada kode PHPMailer yang mendasarinya, yang bagaimanapun juga berubah dan dengan demikian gagal untuk menambahkan Balas-Ke dengan benar.

PHPMailer memang melemparkan Pengecualian untuk itu, namun hingga Joomla 3.5.1 tidak ada yang melihat pengecualian itu jika Anda tidak mengaktifkan penanganan pengecualian secara manual!

Larutan

Anda dapat mencari kode ekstensi addReplyTodan mengubah baris seperti ini:

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

untuk ini:

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

Selanjutnya Anda ingin menambahkan try {} catch() {}kode yang diperlukan untuk menangani Pengecualian yang berasal dari JMail / PHPMailer.

Informasi lebih lanjut:

Diskusi masalah tentang Github

Topik yang relevan di forum Joomla

mavrosxristoforos
sumber
1
Temuan yang bagus. Saya berharap Joomla menyediakan halaman seperti ini untuk pembaruan mereka
Lodder
2
Sesuai hasil edit yang dibuat oleh hbit, ini merupakan masalah sejak Joomla 3.0. Namun, saya dapat mengonfirmasi, bahwa hingga Joomla 3.5, masalah ini tidak terjadi dengan bentuk apa pun menggunakan kode lama.
mavrosxristoforos
3

Saya juga mendapatkan kesalahan ini ketika variabel $ replyTo kosong dan harus digunakan

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