แก้ไขข้อผิดพลาด“ ที่อยู่ไม่ถูกต้อง” หลังจากอัปเกรดเป็น Joomla 3.5.1


10

หลังจากอัปเกรดเป็น Joomla 3.5.1 ฉันได้รับInvalid Addressข้อผิดพลาดในส่วนขยายของฉันที่ใช้ PHPMailer (ระบบการส่งเมล Joomla)

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


16

คำตอบสำหรับผู้ใช้:

หากคุณได้รับข้อผิดพลาดนี้เพราะคุณกำลังใช้ส่วนขยายบางอย่างที่ส่งอีเมลโปรดไปที่หน้านักพัฒนาและเป็นครั้งแรกให้แน่ใจว่าคุณกำลังใช้รุ่นล่าสุด

หากคุณแน่ใจ 100% ว่าคุณใช้เวอร์ชันล่าสุด แต่ยังคงได้รับข้อผิดพลาดนี้คุณควรติดต่อผู้พัฒนาและถามพวกเขาเกี่ยวกับข้อผิดพลาดนี้ การส่งลิงค์ไปยังหน้านี้อาจช่วยให้นักพัฒนาแก้ไขข้อผิดพลาดนี้ได้

หากคุณคิดว่าตัวเองมีประสบการณ์เพียงพอกับ PHP คุณอาจลองแก้ไขรหัสด้วยตัวคุณเองโดยใช้ "คำตอบสำหรับนักพัฒนา" ด้านล่าง

โปรดทราบว่านี่จะไม่ใช่โซลูชันถาวร แต่เป็นเพียง "แพทช์" จนกว่าผู้พัฒนาจะออกเวอร์ชันใหม่

คำตอบสำหรับนักพัฒนา:

Joomla 3.5.1 เปิดใช้งานข้อยกเว้น PHPMailer เป็นค่าเริ่มต้น ดังนั้นข้อผิดพลาดที่ถูกซ่อนไว้ก่อนหน้านี้จะปรากฏขึ้น

กรณีหนึ่งซึ่งสิ่งนี้แสดงให้เห็นในขณะนี้คือด้วยaddReplyToฟังก์ชั่น

ใน Joomla 2.5 addReplyToมีพารามิเตอร์อาเรย์

เริ่มต้นด้วย Joomla 3.0 ( ใช่แล้วย้อนกลับไปในปี 2012 ) ฟังก์ชั่น JMail ของ Joomla มีการเปลี่ยนแปลงเพื่อไม่ให้จัดการกับอาร์เรย์ที่แตกต่างจากพารามิเตอร์สตริง ดังนั้นจึงต้องอาศัยรหัส PHPMailer พื้นฐานซึ่งมีการเปลี่ยนแปลงและยังไม่สามารถเพิ่มการตอบกลับได้อย่างถูกต้อง

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));
}

นอกจากนี้คุณต้องการเพิ่มtry {} catch() {}รหัสตามต้องการเพื่อจัดการข้อยกเว้นที่มาจาก JMail / PHPMailer

ข้อมูลมากกว่านี้:

การสนทนาของปัญหาใน Github

หัวข้อที่เกี่ยวข้องในฟอรัม Joomla


1
ยินดีที่ได้พบ ฉันหวังว่า Joomla จะให้หน้าเว็บเช่นนี้สำหรับการอัปเดต
Lodder

2
ตามการแก้ไขโดย hbit นี่เป็นปัญหาตั้งแต่ Joomla 3.0 อย่างไรก็ตามฉันสามารถยืนยันได้ว่าสูงถึง Joomla 3.5 ปัญหานี้ไม่ได้เกิดขึ้นกับฟอร์มใด ๆ ที่ใช้รหัสเก่า
mavrosxristoforos

3

ฉันยังได้รับข้อผิดพลาดนี้เมื่อตัวแปร $ replyTo ว่างและต้องใช้

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.