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!