2011-04-25 68 views
0

試圖爲我的網站設置一個重置密碼功能,但是我無法通過發送郵件而沒有發生此錯誤。用google和codeigniter發送smtp電子郵件時出錯

Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.

我使用gmail作爲主機發送電子郵件。這是用於發送電子郵件的功能的一部分。

$ user_email = $ this-> input-> post('email_address');

$query = $this->db->get_where('account', array('email_address' => $user_email)); 
    if($query) { 
     $config['protocal'] = 'smtp'; 
     $config['mail_path'] = 'ssl://smtp.googlemail.com'; 
     $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
     $config['smtp_port'] = '465'; 
     $config['smtp_user'] = 'USEREMAIL'; 
     $config['smtp_pass'] = 'PASSWORD'; 
     $config['charset'] = "utf-8"; 
     $config['mailtype'] = "html"; 
     $config['newline'] = "\r\n"; 

     $this->email->initialize($config); 

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

     $this->email->subject('Email Test'); 
     $this->email->message('<h1>Testing the email class.<h1>'); 

     $this->email->send(); 
     if (! $this->email->send()) { 
      show_error($this->email->print_debugger()); 
     } 
     else { 
      echo('DONE');   
     } 

我也收到此錯誤::

Message: Undefined index: Subject

我不明白爲什麼會這樣,你可以請幫我謝謝你。

回答

1

您正在嘗試發送電子郵件兩次,第一次所有的選項都設置與第二他們沒有

變化

$this->email->send(); 
    if (! $this->email->send()) { 
     show_error($this->email->print_debugger()); 
    } 

if (! $this->email->send()) { 
     show_error($this->email->print_debugger()); 
    } 

你如果有任何遺漏,則應該得到相關的錯誤

編輯:

也改變$config['protocal']$config['protocol']來解決問題發送

+0

感謝您的回覆解決了這個問題,但是我仍然遇到錯誤,因爲遇到了以下SMTP錯誤:首先是503 5.5.1 RCPT。 z10sm7618335wfj.12 502 5.5.1無法識別的命令。 z10sm7618335wfj.12 遇到以下SMTP錯誤:502 5.5.1無法識別的命令。 z10sm7618335wfj.12 無法使用PHP SMTP發送電子郵件。您的服務器可能未配置爲使用此方法發送郵件.' – matthew 2011-04-25 10:38:59

+0

您確定端口在465處是否正確? – Dormouse 2011-04-25 10:43:06

+0

嘗試更改'$ config ['smtp_port'] ='465''到'$ config ['smtp_port'] = 465' – Dormouse 2011-04-25 10:47:09

-3

試試這個

$config = array('auth' => 'login', 
     'username' => '***@gmail.com', 
     'password' => '***password', 
     'port' => '465', 
     'ssl' => 'ssl'); 


    $request = $this->getRequest(); 


    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($request->getPost())) { 
      try { 
       $smtpHost = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 
       $mail = new Zend_Mail(); 
       $mail->setBodyText($form->getValue('body')); 
       $mail->setBodyHtml(''); 
       $mail->setFrom(); 
       $mail->addTo()); 
       $mail->setSubject(''); 
       $mail->send($smtpHost); 
      } catch (Exception $e) { 
       die($e); 
      } 
     } 
    } 
+0

他使用codeigniter。 – Dormouse 2011-04-25 10:42:34

+0

我正要試試這段代碼,它不會起作用嗎? – matthew 2011-04-25 10:48:00

+1

不,這段代碼使用Zend Framework而不是Codeigniter。 – Dormouse 2011-04-25 10:51:02

0

你可以給你使用,以發送電子郵件的功能的其餘部分,你發佈的所有內容看起來都是正確的... Message: Undefined index: Subject來自其他地方,可能會導致問題。

另外...這看起來很明顯,但你實際上已經加載了電子郵件類的權利($this->load->library('email);)...而不是隻是初始化它?