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. Thefrom()function is used to set − from where the email is being sent andto()function is used − to whom the email is being sent. Thesubject()andmessage()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 thesend()function as shown below to send an email.
$this->email->send();
Example
Create a controller fileEmail_controller.phpand 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 calledemail_form.phpand 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 theroutes.phpfile inapplication/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 yoursite.com with the URL of your site.
http://yoursite.com/index.php/email