У меня есть следующий код, который отправляет электронное письмо из опубликованной формы:
$this->load->library('email');
$config['charset'] = 'iso-8859-1';
$config['mailtype'] = 'html';
$this->email->initialize($config);
$this->email->from('info@mysite.com', 'Scarabee');
$this->email->to('info@mysite.com');
$this->email->subject('Message via website');
$data['msg'] = nl2br($this->input->post('msg'));
$data['msg'] .= '<br><br><b>Verstuurd door:</b><br>';
if($this->input->post('bedrijf')){
$data['msg'] .= $this->input->post('bedrijf').'<br>';
}
$data['msg'] .= $this->input->post('naam').'<br>';
$data['msg'] .= $this->input->post('adres').' - '.$this->input->post('postcode').', '.$this->input->post('gemeente').'<br>';
$data['msg'] .= $this->input->post('tel').'<br>';
$data['msg'] .= $this->input->post('email');
$message = $this->load->view('email', $data, TRUE);
$this->email->message($message);
if($this->email->send()){
$success = 'Message has been sent';
$this->session->set_flashdata('msg', $success);
redirect('contact/'.$this->input->post('lang'));
}
else{
show_error('Email could not be sent.');
}
Проблема: электронное письмо отправляется с правильным форматированием (из шаблона просмотра электронной почты), но страница затем становится пустой.Например, если я попытаюсь отобразить $ message чуть ниже вызова $ this-> email-> send (), ничего не появится.Перенаправление, как я пытаюсь выше, очевидно, тоже не работает.Я что-то пропустил?Спасибо за любую помощь ...
Обновление
Отследил проблему до функции внутри /system/libraries/Email.php (библиотека электронной почты CI по умолчанию).Закомментирование кода внутри этой функции позволяет отправлять почту, а также правильно перенаправлять:
protected function _set_error_message($msg, $val = '')
{
$CI =& get_instance();
$CI->lang->load('email');
if (substr($msg, 0, 5) != 'lang:' || FALSE === ($line = $CI->lang->line(substr($msg, 5))))
{
$this->_debug_msg[] = str_replace('%s', $val, $msg)."<br />";
}
else
{
$this->_debug_msg[] = str_replace('%s', $val, $line)."<br />";
}
}
Строка, которая вызвала ошибку: $ CI-> lang-> load ('email'));Пойди разберись ...
ОБНОВЛЕНИЕ 2: РЕШЕНО
У меня было это в конструкции моего контроллера:
function __construct() {
parent::__construct();
$this->lang = $this->uri->segment(2, 'nl');
}
Я предполагаю, что был конфликтмежду $ this-> lang и функцией _set_error_message, которая также возвращает переменную "lang" (см. var_dump ниже).
Решение: изменил $ this-> lang на $ this-> language , и все стало просто невероятно!
Думаю, что я опубликую ответ здесь, если кто-нибудь ещепостоянно теряет волосы с похожей проблемой: -)