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!