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

Viewed 48

Here's my code. I have tried using 'mail' as protocol, yet still doesn't deliver. But it does get delivered on localhost perfectly and on other servers. But on this particular vps server, it doesn't. Thanks in advance.

$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;
    }
3 Answers

Remove the

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

line and let Codeigniter to use it's default parameters. Or use this configs

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

[SOLVED] The Issue was from the mail headers. I didn't set the headers. Here's a working example

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

I got this and it seems to send mail, but the issue with this is it doesn't send to the recipient. Instead, it sends it to the webMail.

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