我有下面的代碼從一個發佈形式發送電子郵件:
$this->load->library('email');
$config['charset'] = 'iso-8859-1';
$config['mailtype'] = 'html';
$this->email->initialize($config);
$this->email->from('[email protected]', 'Scarabee');
$this->email->to('[email protected]');
$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.');
}
問題:電子郵件被用正確的格式發送(從電子郵件視圖模板),但該頁面將變爲空白。例如,如果我試圖在$ this-> email-> send()調用下面回顯$ message,則什麼都不顯示。重定向,正如我上面的嘗試,顯然不起作用。我錯過了什麼嗎?感謝您的幫助......
更新
究其根源,問題到內部/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->朗>負載(「電子郵件」); 去圖...
更新2:解決
我在控制器的結構有這樣的:
function __construct() {
parent::__construct();
$this->lang = $this->uri->segment(2, 'nl');
}
我想有$這個 - 之間的衝突>郎和_set_error_message函數,它也返回一個「lang」變量(更多地參見var_dump)。
解決方案:已將$ this-> lang更改爲$ this-> language,並且所有內容都是hunky dory!
想我會發布的情況下,任何人在這裏的答案是不斷脫髮類似的問題:-)
我試過了上面提到的兩個版本 - 都導致了空白頁。但是,檢查日誌文件時,我發現這樣:** PHP致命錯誤:調用1973上的/Applications/MAMP/htdocs/sitename/system/libraries/Email.php中的非對象上的成員函數load() **。該行的內容如下:$ CI-> lang-> load('email');所以有些事情是不對的,但我不知道它是什麼o_O – Mudshark
這看起來很平常,但是你的CodeIgniter更新了嗎?你使用的是http://codeigniter.com的最新版本嗎? – Repox
是的:CI 2.1是最新版本。我註釋了1973年開始的函數內部的代碼,並猜測:郵件被髮送,加上正確的重定向。我最終用應用程序/庫/ Email.php內的我自己的版本(註釋掉的代碼)覆蓋了系統/庫/ Email.php。 – Mudshark