Tuesday, February 14, 2017

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

No comments:

Post a Comment