CodeIgniter 的电子邮件可传递性问题。我的代码 returns 电子邮件已发送,但未送达 vps 服务器上的收件人

Issues with email deliverability with CodeIgniter. my code returns email sent, but doesn't get delivered to the recipient on a vps server

这是我的代码。我已尝试使用 'mail' 作为协议,但仍未交付。但它确实可以在本地主机和其他服务器上完美交付。但是在这个特定的 vps 服务器上,它没有。提前致谢。

$config = array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'myemail@gmail.com',
        'smtp_pass' => '***********',
        'smtp_timeout' => 10,
        'mailtype' => 'html',
        'starttls'  => true,
        'newline'   => "\r\n", 
    );
    $this->load->library('email');
    $this->email->initialize($config);
    $this->email->from($sender);
    $this->email->to($email);
    $this->email->subject($subject);
    $this->email->message($mailToSend);
    $flag = $this->email->send();
    if ($flag) {
        return $flag;
    } else {
        return false;
    }

删除

$this->email->initialize($config);

行并让 Codeigniter 使用它的默认参数。 或者使用这个配置

$config['useragent']        = 'PHPMailer';              
$config['protocol']         = 'mail';                   
$config['mailpath']         = '/usr/sbin/sendmail';
$config['smtp_host']        = 'localhost';
$config['smtp_user']        = '';
$config['smtp_pass']        = '';
$config['smtp_port']        = 25;
$config['smtp_timeout']     = 30;                       
$config['smtp_crypto']      = '';                       
$config['smtp_debug']       = 0;                        
$config['smtp_auto_tls']    = true;                     
$config['smtp_conn_options'] = array();                 
$config['wordwrap']         = true;
$config['wrapchars']        = 76;
$config['mailtype']         = 'html';                   
$config['charset']          = null;                     
$config['validate']         = true;
$config['priority']         = 3;                        
$config['crlf']             = "\n";                     
$config['newline']          = "\n";                     
$config['bcc_batch_mode']   = false;
$config['bcc_batch_size']   = 200;
$config['encoding']         = '8bit'; 

$this->email->initialize($config);

我收到了,它似乎可以发送邮件,但问题是它没有发送给收件人。相反,它将它发送到网络邮件。

$this->load->library('email');
        $config['mailtype'] = 'html';
        $config['protocol'] = 'sendmail';  
        $config['smtp_port'] = '465'; 
        $config['mailpath'] = '/usr/sbin/sendmail';
        $this->email->initialize($config);
        
        
        $this->email->message($mailToSend);
        $this->email->subject($subject);
        $this->email->from($sender);
        $this->email->reply_to("admin@domain.com");
        $this->email->to($email);
        
       
        // Set recipients
        $this->email->bcc_batch_mode = true;
        $this->email->bcc_batch_size = 50;
        $this->email->bcc("admin@domain.com);
         
        set_time_limit(0);
        ignore_user_abort(true);
        
        // Send this mailing
        $flag = $this->email->send();
        if ($flag) {
            return $flag;
        } else {
            return false;
        }

[已解决] 问题来自邮件 headers。我没有设置 headers。这是一个工作示例

$config = array(
        'protocol' => 'sendmail',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => '465',
        'smtp_user' => 'me@gmail.com',
        'smtp_pass' => '****', 
        'smtp_timeout' => 50, 
        'mailtype' => 'html',
        'starttls'  => true,  
        'charset' => 'utf-8',
        'protocol' => 'sendmail',
        'mailpath' => '/usr/sbin/sendmail',
        'charset' => 'iso-8859-1',
        'wordwrap' => TRUE,
    );  
    $this->load->library('email');
    $this->email->initialize($config);  
    
    $this->email->set_header('X-Mailer', 'CodeIgniter');
    $this->email->set_header('X-Priority', '1');
    $this->email->set_header('Subject', $subject);
    $this->email->set_header('Mime-Version', '1.0');
    $this->email->set_header('Importance', 'High');
    $this->email->set_header('X-MSMail-Priority', 'High'); 

    $this->email->set_newline("\r\n"); 
    $this->email->from('me@mail.com', $sender);
    $this->email->to($email);
    $this->email->cc('me@mail.com');  
    $this->email->subject($subject);
    $this->email->message($mailToSend);
    $flag = $this->email->send();
    if ($flag) {
        return $flag;
    } else {
        return false;
    }