CodeIgniter – Sending Email

CodeIgniter – Sending Email

Sending email in CodeIgniter is much easier. You also configure the preferences regarding email in CodeIgniter. CodeIgniter provides following features for sending emails −

  • Multiple Protocols − Mail, Sendmail, and SMTP
  • TLS and SSL Encryption for SMTP
  • Multiple recipients
  • CC and BCCs
  • HTML or Plaintext email
  • Attachments
  • Word wrapping
  • Priorities
  • BCC Batch Mode, enabling large email lists to be broken into small BCC batches.
  • Email Debugging tools

Email class has the following functions to simplify the job of sending emails.

S.N. Syntax Parameters Return Return Type
1 from($from[, $name = ”[,$return_path = NULL]]) $from (string) − “From” e-mail address

$name (string) − “From” display name

$return_path (string) − Optional email address to redirect undelivered e-mail to

CI_Email instance (method chaining) CI_Email
2 reply_to($replyto[, $name = ”]) $replyto (string) − E-mail address for replies

$name (string) − Display name for the reply-to e-mail address

CI_Email instance (method chaining) CI_Email
2 to($to) $to (mixed) − Comma-delimited string or an array of e-mail addresses CI_Email instance (method chaining) CI_Email
3 cc($cc) $cc (mixed) − Comma-delimited string or an array of e-mail addresses CI_Email instance (method chaining) CI_Email
4 bcc($bcc[, $limit = ”]) $bcc (mixed) − Comma-delimited string or an array of e-mail addresses

$limit (int) − Maximum number of e-mails to send per batch

CI_Email instance (method chaining) CI_Email
5 subject($subject) $subject (string) − E-mail subject line CI_Email instance (method chaining) CI_Email
6 message($body) $body (string) − E-mail message body CI_Email instance (method chaining) CI_Email
7 set_alt_message($str) $str (string) − Alternative e-mail message body CI_Email instance (method chaining) CI_Email
8 set_header($header, $value) $header (string) − Header name

$value (string) − Header value

CI_Email instance (method chaining) CI_Email
9 clear([$clear_attachments = FALSE]) $clear_attachments(bool) – Whether or not to clear attachments CI_Email instance (method chaining) CI_Email
10 send([$auto_clear = TRUE]) $auto_clear (bool) − Whether to clear message data automatically CI_Email instance (method chaining) CI_Email
11 attach($filename[, $disposition = ”[, $newname = NULL[, $mime = ”]]]) $filename (string) − File name

$disposition (string) − ‘disposition’ of the attachment. Most email clients make their own decision regardless of the MIME specification used here.iana

$newname (string) − Custom file name to use in the e-mail

$mime (string) − MIME type to use (useful for buffered data)

CI_Email instance (method chaining) CI_Email
12 attachment_cid($filename) $filename (string) − Existing attachment filename Attachment Content-ID or FALSE if not found string

Sending an Email

To send an email using CodeIgniter, first you have to load email library using the following −


After loading the library, simply execute the following functions to set necessary elements to send an email. The from() function is used to set − from where the email is being sent and to() function is used − to whom the email is being sent. The subject() and message() function is used to set the subject and message of the email.

$this->email->from('', 'Your Name');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

After that, execute the send() function as shown below to send an email.



Create a controller file Email_controller.php and save it inapplication/controller/Email_controller.php.

   class Email_controller extends CI_Controller { 
      function __construct() { 
      public function index() { 
      public function send_mail() { 
         $from_email = ""; 
         $to_email = $this->input->post('email'); 
         //Load email library 
         $this->email->from($from_email, 'Your Name'); 
         $this->email->subject('Email Test'); 
         $this->email->message('Testing the email class.'); 
         //Send mail 
         $this->session->set_flashdata("email_sent","Email sent successfully."); 
         $this->session->set_flashdata("email_sent","Error in sending Email."); 

Create a view file called email_form.php and save it atapplication/views/email_form.php

<!DOCTYPE html> 
<html lang = "en"> 

      <meta charset = "utf-8"> 
      <title>CodeIgniter Email Example</title> 
         echo $this->session->flashdata('email_sent'); 
         echo form_open('/Email_controller/send_mail'); 
      <input type = "email" name = "email" required /> 
      <input type = "submit" value = "SEND MAIL"> 
         echo form_close(); 

Make the changes in the routes.php file in application/config/routes.phpand add the following line at the end of the file.

$route['email'] = 'Email_Controller';

Execute the above example by visiting the following link. Replace the with the URL of your site.

Was this article helpful?

Related Articles

Leave A Comment?

You must be logged in to post a comment.