Problem using CodeIgniter to send emails through Gmail? Problem using CodeIgniter to send emails through Gmail? codeigniter codeigniter

Problem using CodeIgniter to send emails through Gmail?


The error means you cannot connect the the SMTP address you've entered.

you should use: smtp.gmail.com

Check following link for reference:http://mail.google.com/support/bin/answer.py?answer=13287


You could download a nice little sparks package by "Shawn McCool" that utilizes "Swift-Mailer".Check out his site for install instructions

Here is my configuration for sending out email's using a DRY approach(PHP 5.3.0 required!).

Config|--mailer[dot]php

$config['swift_email_server'] = 'ssl://smtp.googlemail.com';$config['swift_email_port'] = 465;$config['swift_email_username'] = '######';$config['swift_email_password'] = '######';

Libarary|--MY_Email

    class MY_Email extends CI_Email {    public function __construct(){        parent::__construct();    }    /**     * =========================================================================     * Parse's html email templates - initalised via swift-mailer     *      * @param mixed $data     * @param string $template     * @return html     *      * =========================================================================      */    public function send_mail($data, $template){        //Anonymous functions are available since PHP 5.3.0        $callback = function ($matches) use ($data){            return ( isset($data[$matches[1]]) )                ? $data[$matches[1]]                : $matches[0];        };        //Finds any matches in brackets [] and replaces them with data passed via callback        return preg_replace_callback(                '/\[(.*?)\]/',                 $callback,                 read_file(EMAIL_TEMPLATES . $template));    }}Email templates location defined in index.phpdefine('EMAIL_TEMPLATES', 'emailtemplates');

Controller|--MY_Controller

    class MY_Controller extends MX_Controller{        protected $user;        protected $swiftMailer = NULL;        public function __construct(){            parent::__construct();            $this->user =   ($this->session->userdata('uid'))                        ?    Member::find($this->session->userdata('uid')) : array();            $this->setup_profile();           $this->form_validation->set_error_delimiters('<p class="form-error">', '</p>');        }        public function setup_profile(){            $sections = array(            'config'  => FALSE,            'http_headers' => FALSE,            'queries'  =>  FALSE,            'memory_usage'  =>  FALSE            );            $this->output->set_profiler_sections($sections);            if(ENVIRONMENT === 'development'){                $this->output->enable_profiler(TRUE);            }        }    protected function prep_email($data, $template){            $message =             Swift_Message::newInstance('Type your heading here...')              ->setFrom($data['email_address'])              ->setTo(array($this->config->item('primary_email'), $data['email_address']))              ->setBody( $this->email->send_mail($data, $template))              ->setContentType('text/html');            return ( $this->swiftMailer->send($message) );     }}

Module|--services // simple test module

public function arrange() { $config = array( array('field'=>'service', 'label'=>'Service', 'rules'=>'trim|required|max_lenght[128]'), array('field'=>'num', 'label'=>'Numer of Sessions', 'rules'=>'trim|required|numeric'), array('field'=>'request_date', 'label'=>'Request_date', 'rules'=>'trim|required'), array('field'=>'note', 'label'=>'Note', 'rules'=>'trim|max_lenght[500]') );

    $this->form_validation->CI =& $this;     $this->form_validation->set_rules($config);     if($this->form_validation->run($this)){        $service = Service::find($this->input->post('service'));        if((int)$this->input->post('num') > 1){            $potential = ( $this->input->post('num') * $service->price );        }else{            $potential =    $this->input->post('num');        }        $insert = array(            'service_id'    =>  $this->input->post('service'),            'num'   =>  $this->input->post('num'),            'request_date'  =>  $this->input->post('request_date'),            'note'  =>  serialize( $this->input->post('note') ),            'potential_income'  =>  $potential,            'member_id' =>  $this->user->id,            'status'    =>  'pending'        );        $emaildata = array(            'service'   =>  $service->slug,            'num'   =>  $insert['num'],            'request_date'  =>  $insert['request_date'],            'note'  =>  $insert['note'],            'potential_income'  =>  $potential,            'email_address' =>  $this->user->email_address,            'status'    =>  'pending',            'fullname'  =>  $this->user->firstname . ' ' . $this->user->surname,            'message_sent'  =>  date('M d h:iA'),          'site_link'  =>  ''        );        if(Meeting::create($insert)){            if(parent::prep_email($emaildata, 'request_meeting[dot]html')){                $this->session->set_flashdata('success' ,'Request has been sent! You will recieve an email shortly from Paul');                //redirect('/');            }else{                $this->session->set_flashdata('error', 'Email service seems to be down at the moment');                //redirect('/');            }        }else{            $this->session->set_flashdata('error', 'Unable to request meeting at this time');            //redirect('/');        }    }else{        $this->meetings_form();    }

Hope this helps!