I’ve developed my own libraries for rapid development of PHP applications. Email library is one area which I didn’t feel like developing a library for. Just then, I remembered how simple and robust CodeIgniter’s Email class was. I decided to try it on my own script. It was not at all difficult to get it working. It just commented out few lines of codes and voila! I was able to send my first email.
Those who are in need of a email library could use this simple library separately. I’ll guide you through the whole process step by step.
First thing you need to do is copy the Email.php from system/libraries folder and place it inside your script. Then use your favorite IDE to edit these lines:
Comment out the first line which stops the direct access to the script.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Should look like:
<?php //if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Then goto line 1920, ie. to the _set_error_message function.
Change
function _set_error_message($msg, $val = '') { $CI =& get_instance(); $CI->lang->load('email'); if (FALSE === ($line = $CI->lang->line($msg))) { $this->_debug_msg[] = str_replace('%s', $val, $msg)." "; } else { $this->_debug_msg[] = str_replace('%s', $val, $line)." "; } }
to:
function _set_error_message($msg, $val = '') {/* $CI =& get_instance(); $CI->lang->load('email'); if (FALSE === ($line = $CI->lang->line($msg))) { $this->_debug_msg[] = str_replace('%s', $val, $msg)." "; } else { $this->_debug_msg[] = str_replace('%s', $val, $line)." "; }*/ }
Now to send a mail:
<? include('Email.php'); $config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_port' => 465, 'smtp_user' => '[email protected]', 'smtp_pass' => 'abc123', 'mailtype' => 'html', 'charset' => 'iso-8859-1' ); $email = new CI_Email($config); $email->set_newline("\r\n"); $email->from('[email protected]', 'My Script'); $email->to('[email protected]'); $email->subject('Just a test'); $msg = "Testing CI email class"; $email->message($msg); $email->send(); ?>
Run the script and your mail should be sent. I also posted the exact code which should be used when sending a mail using gmail’s smtp.
Cheers!