当使用codeigniter通过gmail发送邮件时,邮件不会进入收件人邮件的收件箱

vqlkdk9b  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(156)

我正在尝试通过gmail smtp中继发送邮件,我使用了gmail邮件ID,并在启用两步验证后创建了应用密码,我发送邮件时使用的函数如下:

function sendemail($name,$emailid,$token,$pwd, $type)
    {
        $config = array();
        $config['protocol']  = 'mail';
        $config['mailpath']  = '/usr/sbin/sendmail';
        $config['smtp_host'] = 'ssl://smtp.gmail.com';
        $config['smtp_user'] = 'eticketing.info.cdit@gmail.com';
        $config['smtp_pass'] = 'MYGMAILAPPPASSWORD';
        $config['smtp_port'] = 587;
       
        $config['smtp_crypto']  = 'ssl';
        $config['smtp_timeout'] = 600;
        $config['mailtype']     = "html";
        $config['charset']      = "utf-8";
        $config['newline']      = "\r\n";
        $config['wordwrap']     = TRUE;
        $config['validate']     = FALSE;
        
        $email = \Config\Services::email();
        
        $email->initialize($config);
        $email->setFrom('eticketing.info.cdit@gmail.com', 'e-Ticketing: Complaints & Feedback Management System CDIT');
        $email->setTo($emailid);

        if ($type == 'verify') {
            $email->setSubject('Password for E-Ticketing Login');
            $email->setMessage('Dear '.$name.',Your credentials for e-ticketing Login is<br/> Username: '.
                $emailid.'<br/>Password: '.$pwd.'<br/>
            Application URL: <a href="'.base_url().'">'.base_url().'</a>');

        } 
        elseif(($type == 'forgot')||($type == 'reset')){
          $email->setSubject('Password Reset for E-Ticketing Login');
          $email->setMessage('Dear '.$name.',Your new credentials for e-ticketing Login is<br/> Username: '.$emailid.'<br/>Password: '.$pwd.'<br/>
          Application URL: <a href="'.base_url().'">'.base_url().'</a>');
        }

        if ($email->send()) {
            return true;
        } else {
            /*echo "<p>Email NOT Send</p>";
            echo $this->email->print_debugger();
            die;*/
            return false;
        }
    }

函数返回true,但在收件人收件箱中找不到邮件。在gmail收件箱或codeigniter端没有发现错误。我还应该在GMail中做哪些设置才能正确发送邮件

pgky5nke

pgky5nke1#

您应该决定使用什么协议发送电子邮件到:

  • mail -使用PHP发送电子邮件
  • sendmail -使用服务器应用程序发送电子邮件(如果安装在服务器中(mailpath:/usr/sbin/sendmail))
  • smtp -使用smtp服务器发送电子邮件(本地或远程smtp服务器)

你需要使用smtp协议Sending email with gmail smtp with codeigniter email library

相关问题