Sending email with gmail smtp with codeigniter email library

后端 未结 8 2167
情书的邮戳
情书的邮戳 2020-11-22 06:29
load->library(\'email\');
    }

    func         


        
相关标签:
8条回答
  • 2020-11-22 07:01

    You need to enable SSL in your PHP config. Load up php.ini and find a line with the following:

    ;extension=php_openssl.dll

    Uncomment it. :D

    (by removing the semicolon from the statement)

    extension=php_openssl.dll

    0 讨论(0)
  • 2020-11-22 07:01

    Perhaps your hosting server and email server are located at same place and you don't need to go for smtp authentication. Just keep every thing default like:

    $config = array(        
        'protocol' => '',
        'smtp_host' => '',
        'smtp_port' => '',
        'smtp_user' => 'yourname@gmail.com',
        'smtp_pass' => '**********'
        );
    

    or

    $config['protocol'] = '';
    $config['smtp_host'] = '';
    $config['smtp_port'] = ;
    $config['smtp_user'] = 'yourname@gmail.com';
    $config['smtp_pass'] = 'password';
    

    it works for me.

    0 讨论(0)
  • 2020-11-22 07:03

    Change it to the following:

    $ci = get_instance();
    $ci->load->library('email');
    $config['protocol'] = "smtp";
    $config['smtp_host'] = "ssl://smtp.gmail.com";
    $config['smtp_port'] = "465";
    $config['smtp_user'] = "blablabla@gmail.com"; 
    $config['smtp_pass'] = "yourpassword";
    $config['charset'] = "utf-8";
    $config['mailtype'] = "html";
    $config['newline'] = "\r\n";
    
    $ci->email->initialize($config);
    
    $ci->email->from('blablabla@gmail.com', 'Blabla');
    $list = array('xxx@gmail.com');
    $ci->email->to($list);
    $this->email->reply_to('my-email@gmail.com', 'Explendid Videos');
    $ci->email->subject('This is an email test');
    $ci->email->message('It is working. Great!');
    $ci->email->send();
    
    0 讨论(0)
  • 2020-11-22 07:08
    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'xxx',
        'smtp_pass' => 'xxx',
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");
    
    // Set to, from, message, etc.
    
    $result = $this->email->send();
    

    From the CodeIgniter Forums

    0 讨论(0)
  • 2020-11-22 07:09

    According to the CI docs (CodeIgniter Email Library)...

    If you prefer not to set preferences using the above method, you can instead put them into a config file. Simply create a new file called the email.php, add the $config array in that file. Then save the file at config/email.php and it will be used automatically. You will NOT need to use the $this->email->initialize() function if you save your preferences in a config file.

    I was able to get this to work by putting all the settings into application/config/email.php.

    $config['useragent'] = 'CodeIgniter';
    $config['protocol'] = 'smtp';
    //$config['mailpath'] = '/usr/sbin/sendmail';
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_user'] = 'YOUREMAILHERE@gmail.com';
    $config['smtp_pass'] = 'YOURPASSWORDHERE';
    $config['smtp_port'] = 465; 
    $config['smtp_timeout'] = 5;
    $config['wordwrap'] = TRUE;
    $config['wrapchars'] = 76;
    $config['mailtype'] = 'html';
    $config['charset'] = 'utf-8';
    $config['validate'] = FALSE;
    $config['priority'] = 3;
    $config['crlf'] = "\r\n";
    $config['newline'] = "\r\n";
    $config['bcc_batch_mode'] = FALSE;
    $config['bcc_batch_size'] = 200;
    

    Then, in one of the controller methods I have something like:

    $this->load->library('email'); // Note: no $config param needed
    $this->email->from('YOUREMAILHERE@gmail.com', 'YOUREMAILHERE@gmail.com');
    $this->email->to('SOMEEMAILHERE@gmail.com');
    $this->email->subject('Test email from CI and Gmail');
    $this->email->message('This is a test.');
    $this->email->send();
    

    Also, as Cerebro wrote, I had to uncomment out this line in my php.ini file and restart PHP:

    extension=php_openssl.dll
    
    0 讨论(0)
  • 2020-11-22 07:11

    Another option I have working, in a linux server with Postfix:

    First, configure CI email to use your server's email system: eg, in email.php, for example

    # alias to postfix in a typical Postfix server
    $config['protocol'] = 'sendmail'; 
    $config['mailpath'] = '/usr/sbin/sendmail'; 
    

    Then configure your postfix to relay the mail to google (perhaps depending on the sender address). You'll probably need to put you user-password settings in /etc/postfix/sasl_passwd (docs)

    This is much simpler (and less fragmente) if you have a linux box, already configured to send some/all of its outgoing emails to Google.

    0 讨论(0)
提交回复
热议问题