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

Mail doesnot come in inbox of recipient mail when sending mail through gmail with codeigniter

提问人:tanzeem 提问时间:3/3/2023 更新时间:3/3/2023 访问量:37

问:

我正在尝试通过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'] = '[email protected]';
        $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('[email protected]', '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 中执行哪些设置才能正确发送电子邮件

CodeIgniter 电子邮件 SMTP Gmail

评论


答:

0赞 neurodede 3/3/2023 #1

您应该决定使用哪种协议将电子邮件发送到:

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

你需要使用 smtp 协议 使用 gmail 发送邮件 带有 codeigniter 电子邮件库的 smtp