Sửa lỗi Địa chỉ không hợp lệ, lỗi sau khi nâng cấp lên Joomla 3.5.1


10

Sau khi nâng cấp lên Joomla 3.5.1, tôi gặp Invalid Addresslỗi trong một số tiện ích mở rộng sử dụng PHPMailer (hệ thống Gửi thư Joomla).

Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


16

Trả lời cho người dùng:

Nếu bạn gặp phải lỗi này vì bạn đang sử dụng một số tiện ích mở rộng gửi email, vui lòng truy cập trang nhà phát triển và trước tiên hãy đảm bảo bạn đang sử dụng phiên bản mới nhất .

Nếu bạn chắc chắn 100% rằng bạn đang sử dụng phiên bản mới nhất nhưng vẫn gặp lỗi này, bạn nên liên hệ với nhà phát triển và hỏi họ về lỗi này. Gửi cho họ một liên kết đến trang này, có thể giúp nhà phát triển khắc phục lỗi này .

Nếu bạn cho rằng mình đủ kinh nghiệm với PHP, bạn có thể tự mình sửa mã, sử dụng "câu trả lời cho nhà phát triển" bên dưới.

Xin lưu ý rằng đây sẽ không phải là một giải pháp lâu dài, mà chỉ là một "bản vá", cho đến khi nhà phát triển phát hành một phiên bản mới.

Trả lời cho các nhà phát triển:

Joomla 3.5.1 cho phép các ngoại lệ của PHPMailer theo mặc định. Do đó, các lỗi đã được ẩn trước đó xuất hiện.

Một trường hợp mà điều này cho thấy bây giờ là với addReplyTochức năng.

Trong Joomla 2.5 addReplyTocó một tham số mảng.

Bắt đầu với Joomla 3.0 ( vâng, trở lại vào năm 2012 ) Hàm JMail của Joomla đã thay đổi để không xử lý các mảng khác với các tham số chuỗi. Do đó, nó dựa vào mã PHPMailer cơ bản, tuy nhiên cũng đã thay đổi và do đó không thể thêm chính xác Trả lời.

PHPMailer không đưa ra một Ngoại lệ cho điều đó, tuy nhiên cho đến khi Joomla 3.5.1 không ai thấy ngoại lệ đó nếu bạn không kích hoạt xử lý ngoại lệ theo cách thủ công!

Giải pháp

Bạn có thể tìm kiếm mã mở rộng của mình addReplyTovà thay đổi các dòng như thế này:

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

đến đây:

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

Hơn nữa, bạn muốn thêm try {} catch() {}mã khi cần thiết để xử lý Ngoại lệ đến từ JMail / PHPMailer.

Thêm thông tin:

Thảo luận về vấn đề trên Github

Chủ đề liên quan trong diễn đàn Joomla


1
Đẹp tìm thấy. Tôi muốn Joomla cung cấp các trang như thế này cho các cập nhật của họ
Lodder

2
Theo chỉnh sửa được thực hiện bởi hbit, đây là một vấn đề kể từ Joomla 3.0. Tuy nhiên, tôi có thể xác nhận rằng, lên tới Joomla 3.5, vấn đề này không xảy ra với bất kỳ hình thức nào sử dụng mã cũ.
mavrosxristoforos

3

Tôi cũng gặp lỗi này khi biến $ replyTo trống và phải sử dụng

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.