Sunday, 25 September 2016

11. Sending Email

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.SyntaxParametersReturnReturn Type
1from($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
2reply_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
2to($to)
$to (mixed) − Comma-delimited string or an array of e-mail addresses
CI_Email instance (method chaining)CI_Email
3cc($cc)
$cc (mixed) − Comma-delimited string or an array of e-mail addresses
CI_Email instance (method chaining)CI_Email
4bcc($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
5subject($subject)
$subject (string) − E-mail subject line
CI_Email instance (method chaining)CI_Email
6message($body)
$body (string) − E-mail message body
CI_Email instance (method chaining)CI_Email
7set_alt_message($str)
$str (string) − Alternative e-mail message body
CI_Email instance (method chaining)CI_Email
8set_header($header, $value)
$header (string) − Header name
$value (string) − Header value
CI_Email instance (method chaining)CI_Email
9clear([$clear_attachments = FALSE])
$clear_attachments(bool) – Whether or not to clear attachments
CI_Email instance (method chaining)CI_Email
10send([$auto_clear = TRUE])
$auto_clear (bool) − Whether to clear message data automatically
CI_Email instance (method chaining)CI_Email
11attach($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
12attachment_cid($filename)
$filename (string) − Existing attachment filename
Attachment Content-ID or FALSE if not foundstring

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 inapplication/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 atapplication/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 inapplication/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