rồi , Tôi chỉ muốn cải thiện câu trả lời tốt nhất ở đây. Tín dụng chuyển đến @Tekniskt và sự khác biệt duy nhất ở đây là các cài đặt mà bạn có thể có trong /application/config/email.php sẽ bị bỏ qua, điều này gây khó chịu, đặc biệt nếu bạn đang sử dụng cài đặt STMP tùy chỉnh.
Dưới đây là đoạn code đầy đủ của lớp MY_Email.php tôi đã cải thiện từ câu trả lời ở trên:
class MY_Email extends CI_Email {
public function __construct($config = array())
{
if (count($config) > 0)
{
$this->initialize($config);
}
else
{
$this->_smtp_auth = ($this->smtp_user == '' AND $this->smtp_pass == '') ? FALSE : TRUE;
$this->_safe_mode = ((boolean)@ini_get("safe_mode") === FALSE) ? FALSE : TRUE;
}
log_message('debug', "Email Class Initialized");
}
// this will allow us to add headers whenever we need them
public function set_header($header, $value){
$this->_headers[$header] = $value;
}
}
Hy vọng nó sẽ giúp! :)
Tôi đã làm bài kiểm tra của mình và có vẻ như bây giờ là /config/email.php được bao gồm và cài đặt được chuyển đúng cách.
Chúc mừng và cảm ơn câu trả lời! :)
Nguồn
2014-02-11 14:30:53
Cảm ơn lời giải thích ... –
Tôi đã sử dụng phương pháp này thành công để thêm tiêu đề mới cho mail gửi đi. Tuy nhiên khi tôi sử dụng nó, nó không còn quan tâm đến tập tin cấu hình email.php mà giữ các thiết lập smtp. Có cách nào để làm cả hai? – Gortron
Bạn đúng @Gortron, khi bạn sử dụng lớp này, bạn sẽ mất cài đặt từ config/email.php; cách tôi giải quyết nó, là sao chép toàn bộ hàm CONSTRUCT() từ lớp gốc, không làm cha mẹ :: __ construct(); không chắc chắn tại sao điều đó lại xảy ra, nhưng khi tôi sao chép toàn bộ hàm tạo, nó hoạt động. Tôi sẽ thực hiện một câu trả lời dưới đây, bởi vì các ý kiến là quá ngắn cho toàn bộ mã số :) –