หลังจากอัปเกรดเป็น Joomla 3.5.1 ฉันได้รับInvalid Address
ข้อผิดพลาดในส่วนขยายของฉันที่ใช้ PHPMailer (ระบบการส่งเมล Joomla)
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
หลังจากอัปเกรดเป็น Joomla 3.5.1 ฉันได้รับInvalid Address
ข้อผิดพลาดในส่วนขยายของฉันที่ใช้ PHPMailer (ระบบการส่งเมล Joomla)
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
คำตอบ:
หากคุณได้รับข้อผิดพลาดนี้เพราะคุณกำลังใช้ส่วนขยายบางอย่างที่ส่งอีเมลโปรดไปที่หน้านักพัฒนาและเป็นครั้งแรกให้แน่ใจว่าคุณกำลังใช้รุ่นล่าสุด
หากคุณแน่ใจ 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
ข้อมูลมากกว่านี้:
ฉันยังได้รับข้อผิดพลาดนี้เมื่อตัวแปร $ replyTo ว่างและต้องใช้
if ( !empty($replyTo) ) {
$mailer->addReplyTo($replyTo, $replyToName);
}