How to fix email sending method with codeigniter

Hi guy, I am trying to send an email using the codeiginiter class mailing class function, but I found a problem with the SMTP protocol. I am using gmail smtp protocol. I am running this on a local machine. I am using the Xampp 1.7.4 package and I tried the installation as shown below:

function index() { $config['protocol'] = 'smtp'; // mail, sendmail, or smtp The mail sending protocol. $config['smtp_host'] = 'smtp.gmail.com'; // SMTP Server Address. $config['smtp_user'] = ' me@gmail.com '; // SMTP Username. $config['smtp_pass'] = '123'; // SMTP Password. $config['smtp_port'] = '25'; // SMTP Port. $config['smtp_timeout'] = '5'; // SMTP Timeout (in seconds). $config['wordwrap'] = TRUE; // TRUE or FALSE (boolean) Enable word-wrap. $config['wrapchars'] = 76; // Character count to wrap at. $config['mailtype'] = 'html'; // text or html Type of mail. If you send HTML email you must send it as a complete web page. Make sure you don't have any relative links or relative image paths otherwise they will not work. $config['charset'] = 'utf-8'; // Character set (utf-8, iso-8859-1, etc.). $config['validate'] = FALSE; // TRUE or FALSE (boolean) Whether to validate the email address. $config['priority'] = 3; // 1, 2, 3, 4, 5 Email Priority. 1 = highest. 5 = lowest. 3 = normal. $config['crlf'] = "\r\n"; // "\r\n" or "\n" or "\r" Newline character. (Use "\r\n" to comply with RFC 822). $config['newline'] = "\r\n"; // "\r\n" or "\n" or "\r" Newline character. (Use "\r\n" to comply with RFC 822). $config['bcc_batch_mode'] = FALSE; // TRUE or FALSE (boolean) Enable BCC Batch Mode. $config['bcc_batch_size'] = 200; // Number of emails in each BCC batch. $this->load->library('email'); $this->email->initialize($config); $this->email->from(' me@gmail.com ', 'Me'); $this->email->reply_to(' me@gmail.com ', 'Me'); $this->email->to(' you@yahoo.com '); $this->email->subject('testing my mail function with CodeIgniter'); $this->email->message('<html><body>this is the content</body></html>'); if ( ! $this->email->send()){ echo 'error! <br />'; // Generate error } echo $this->email->print_debugger(); } 

and below the error was shown in my browser:

 error! 220 mx.google.com ESMTP b8sm581192pbj.46 hello: 250-mx.google.com at your service, [118.96.231.25] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250 ENHANCEDSTATUSCODES Failed to send AUTH LOGIN command. Error: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 from: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 to: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 data: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46 502 5.5.1 Unrecognized command. b8sm581192pbj.46 The following SMTP error was encountered: 502 5.5.1 Unrecognized command. b8sm581192pbj.46 Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method. User-Agent: CodeIgniter Date: Wed, 1 Jun 2011 09:27:21 +0700 From: "Me" Return-Path: Reply-To: "Me" To: you@yahoo.com Subject: =?utf-8?Q?testing_my_mail_function_with_CodeIgniter?= X-Sender: me@gmail.com X-Mailer: CodeIgniter X-Priority: 3 (Normal) Message-ID: < 4de5a38938720@gmail.com > Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="B_ALT_4de5a38938733" This is a multi-part message in MIME format. Your email application may not support this format. --B_ALT_4de5a38938733 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit this is the content --B_ALT_4de5a38938733 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><body>this is the content</body></html> --B_ALT_4de5a38938733-- 
+7
source share
5 answers

For security reasons, Google email servers require SSL or TLS to send mail. It does not use the standard unencrypted port 25 method.

You basically have two options. 1) Use sendmail or mail on your server to deliver messages, or 2) use the method described here to send email through Google servers using SSL. Good luck and I hope this helps.

+9
source

You are trying to send outgoing mail through Gmail to the standard SMTP port 25. Gmail does not accept unencrypted connections on this port (or any port). You must use port 465 over SSL.

You must change $config['smtp_port'] to 465 and $config['smtp_host'] to 'ssl://smtp.googlemail.com'

More info here

+3
source

You can even use port 587:

 $config['smtp_port'] = '587'; 

and smtp-host like:

 $config['smtp_host'] = 'ssl://smtp.gmail.com'; 
+3
source

I solved this problem by including the ssl prefix on smtp_host , leaving it as follows:

 $config['smtp_host'] = 'ssl://smtp.gmail.com'; 

And don't forget to use port 465 (this google smtp port):

 $config['smtp_port'] = '465'; 

Otherwise, by default, Google blocks “low-security connections”, so you can log in to your google account and configure this option.

Allow less secure applications to access accounts

Activate this option, and then try again. Hope this helps you!

+1
source

1) The smtp port must be 465 .

2) You, the smtp host, must be ssl://smtp.gmail.com .

 $config['smtp_host'] = 'ssl://smtp.gmail.com'; // SMTP Server Address. $config['smtp_port'] = '465'; // SMTP Port. 
-one
source