用google和codeigniter发送smtp电子邮件时出错

问题描述:

试图为我的网站设置一个重置密码功能,但是我无法通过发送邮件而没有发生此错误。用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

我不明白为什么会这样,你可以请帮我谢谢你。

您正在尝试发送电子邮件两次,第一次所有的选项都设置与第二他们没有

变化

$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

试试这个

$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

你可以给你使用,以发送电子邮件的功能的其余部分,你发布的所有内容看起来都是正确的... Message: Undefined index: Subject来自其他地方,可能会导致问题。

另外...这看起来很明显,但你实际上已经加载了电子邮件类的权利($this->load->library('email);)...而不是只是初始化它?