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

时间:2011-04-25 10:13:12

标签: php email codeigniter smtp gmail

尝试为我的网站设置重置密码功能但是我无法通过发送电子邮件而不会发生此错误。

  

无法使用PHP mail()发送电子邮件。   您的服务器可能未配置为   使用这种方法发送邮件。

我使用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('matthew.attanasio135@gmail.com', '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');        
        } 

我也收到此错误::

  

消息:未定义的索引:主题

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

3 个答案:

答案 0 :(得分: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']以解决发送问题

答案 1 :(得分:0)

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

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

答案 2 :(得分:-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);
            }
        }
    }