简体   繁体   中英

Error when sending smtp email with google and codeigniter

trying to make a reset password function for my website however I cant get past sending an email without this error occuring.

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

I am using gmail as the host to send the email. Here is the part of the function that is used to send the email.

$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');        
        } 

I am also getting this error::

Message: Undefined index: Subject

I do not understand why this is happening could you please help me out thank you.

You're trying to send the email twice, the first time all your options are set and the second they aren't

change

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

to

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

You should then get relevant errors if any remain.

Edit:

also change $config['protocal'] to $config['protocol'] to fix the sending problem

Can you give the rest of the function you're using to send the email, everything you've posted looks correct... the Message: Undefined index: Subject is coming from somewhere else and might be causing problems.

Also... this may seem obvious, but you have actually loaded the email class somewhere, right ( $this->load->library('email); )... rather than just initialized it?

try this

    $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);
            }
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM