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 −

$this->load->library('email');

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@example.com', 'Your Name');
$this->email->to('someone@example.com');
 
$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.

$this->email->send();

Example

Create a controller file Email_controller.php and save it in application/controller/Email_controller.php.

<?php 
   class Email_controller extends CI_Controller { 
 
      function __construct() { 
         parent::__construct(); 
         $this->load->library('session'); 
         $this->load->helper('form'); 
      } 
		
      public function index() { 
	
         $this->load->helper('form'); 
         $this->load->view('email_form'); 
      } 
  
      public function send_mail() { 
         $from_email = "your@example.com"; 
         $to_email = $this->input->post('email'); 
   
         //Load email library 
         $this->load->library('email'); 
   
         $this->email->from($from_email, 'Your Name'); 
         $this->email->to($to_email);
         $this->email->subject('Email Test'); 
         $this->email->message('Testing the email class.'); 
   
         //Send mail 
         if($this->email->send()) 
         $this->session->set_flashdata("email_sent","Email sent successfully."); 
         else 
         $this->session->set_flashdata("email_sent","Error in sending Email."); 
         $this->load->view('email_form'); 
      } 
   } 
?>

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

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

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Email Example</title> 
   </head>
	
   <body> 
      <?php 
         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"> 
		
      <?php 
         echo form_close(); 
      ?> 
   </body>
	
</html>

Make the changes in the routes.php file in application/config/routes.php and 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 yoursite.com with the URL of your site.

http://yoursite.com/index.php/email
Advertisements