2010-10-13 72 views
0

我有一個從聯繫人頁面將電子郵件發送到自己的腳本:CodeIgniter的PHP的郵件功能不工作

if($_POST["submit"] == "Send Message") 
{ 
    $to = "[email protected]"; 
    $subject = "Message received from Contact Us"; 
    $message = "Email: ".$_POST["email"]."<br>"; 
    $message .= "Name: ".$_POST["name"]."<br>"; 
    $message .= "Message: ".$_POST["message"]."<br>"; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    echo mail($to,$subject,$message,$headers); 
    $messageSent = TRUE; 
} 

它實際上呼應1。但是我沒有收到我的電子郵件帳戶的任何電子郵件(Gmail的)。我使用Codeigniter我看到有一個電子郵件庫,但這應該工作不應該嗎?

我有幾個其他類似的形式,我真的不想整合這個庫,如果我已經有正常的PHP來做到這一點。

我知道我的服務器能夠發送電子郵件,因爲我之前做過,我有一種感覺這是codeigniter相關的。如果沒有其他選項,我想我可以使用庫並更改代碼。任何建議,這將有助於!謝謝:)

+0

試着只做'\ n'而不是'\ r \ n'。我相信PHP會因此而陷入混亂。 – lonesomeday 2010-10-13 21:01:04

+0

這是一個很好的觀點 - 雖然看起來像是一個老問題,但用快速谷歌來判斷,不能說我自己經歷過,雖然 – Ross 2010-10-13 21:04:27

回答

2

它不與CI相關,因爲您沒有使用任何CI功能。

你有什麼理由不〜使用電子郵件幫手嗎?

在CI:

$this->load->library('form_validation'); 

$this->form_validation->set_rules('name', 'Name', 'trim|required'); 
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); 
$this->form_validation->set_rules('message', 'Message', 'required'); 

if($this->form_validation->run() == FALSE) 
{ 
    $this->load->view('contact-form'); 
} 
else 
{ 
    $this->load->library('email'); 

    $name = $this->input->post('name'); 
    $email = $this->input->post('email'); 
    $message= $this->input->post('message'); 

    $this->email->from($email, $name); 
    $this->email->to('[email protected]'); 

    $this->email->subject('Subject'); 
    $this->email->message($message); 
    if($this->email->send()) 
    { 
     echo $this->email->print_debugger(); 
     //redirect('contact-us/thanks', 'location'); 
    } 
    else 
    { 
    echo 'Something went wrong...'; 
    } 

} 

還注意到,郵件取決於如果PHP能夠把它返回真/假。沒有辦法知道郵件是否曾收到過。

在CI中試一下 - 看看結果是否有任何差異

+0

感謝您的時間,我會嘗試這 – 2010-10-13 21:12:11

+0

您還需要form_validation幫手,我從原始代碼中省略了這一點。請參閱編輯版本 – Ross 2010-10-13 21:16:59

+0

不要使用CI幫助程序它的CRAP請參閱:http://stackoverflow.com/questions/5262794/codeigniter-email-doesnt-work – Chris 2011-03-10 17:09:23

0

Codeigniter不能爲你的問題負責,因爲mail()是一個php函數,除了包含一個php源文件之前的一些花哨的字符串預處理之外,它不能被覆蓋。

+0

好吧,你知道爲什麼這不起作用嗎? – 2010-10-13 21:00:05

+1

嘗試var_dump(郵件($ to,$ subject,$ message,$ headers));如果它是真實的,那麼郵件將您的電子郵件發送到外發服務器,問題可能在標題或谷歌郵件中。 – ITroubs 2010-10-13 21:03:06

+0

順便說一句,你是否對每個答案直接提供了答案和完整解決方案? – ITroubs 2010-10-13 21:05:35