How To Send Email In Codeigniter Using Smtp?


In this tutorial, we are learning how to send email in Codeigniter using SMTP.

Codeigniter 4 sending email is very easy because of the new functionality, Now the Codeigniter 4 available to download from the official website we learn unable to send email using PHP SMTP Codeigniter.

They have introduced the services classes to use the Codeigniter 4 services like email; you just call the services in Codeigniter by using the below code.

Create a mail id and their password using Cpanel, and set email and password here.

How To Send Email In Codeigniter Using SMTP ? - Phpcodingstuff.com
\Config\Services::serviceName();
// i.e  \Config\Services::email();

In this tutorial, you learn how to use it you can send the email from your website/localhost to the user/client using Codeigniter 4, so before using the email library, you need to see the library setting in Codeigniter 4.

Step 1: Go To The App/config/Email.php And Open The File
Step 2: Update The Email Credentials
<?php
namespace Config;
 
use CodeIgniter\Config\BaseConfig;
 
class Email extends BaseConfig
{
 
  /**
   * @var string
   */
  public $fromEmail;
 
  /**
   * @var string
   */
  public $fromName;
 
  /**
   * @var string
   */
  public $recipients;
 
  /**
   * The "user agent"
   *
   * @var string
   */
  public $userAgent = 'CodeIgniter';
 
  /**
   * The mail sending protocol: mail, sendmail, smtp
   *
   * @var string
   */
  public $protocol = 'smtp';
 
  /**
   * The server path to Sendmail.
   *
   * @var string
   */
  public $mailPath = '/usr/sbin/sendmail';
 
  /**
   * SMTP Server Address
   *
   * @var string
   */
  public $SMTPHost='mail.phpcodingstuff.com';
 
  /**
   * SMTP Username
   *
   * @var string
   */
  public $SMTPUser = 'abc@phpcodingstuff.com';
 
  /**
   * SMTP Password
   *
   * @var string
   */
  public $SMTPPass = 'YourPasswordHere$';
 
  /**
   * SMTP Port
   *
   * @var integer
   */
  public $SMTPPort = 587;
 
  /**
   * SMTP Timeout (in seconds)
   *
   * @var integer
   */
  public $SMTPTimeout = 15;
 
  /**
   * Enable persistent SMTP connections
   *
   * @var boolean
   */
  public $SMTPKeepAlive = false;
 
  /**
   * SMTP Encryption. Either tls or ssl
   *
   * @var string
   */
  public $SMTPCrypto = 'tls';
 
  /**
   * Enable word-wrap
   *
   * @var boolean
   */
  public $wordWrap = true;
 
  /**
   * Character count to wrap at
   *
   * @var integer
   */
  public $wrapChars = 76;
 
  /**
   * Type of mail, either 'text' or 'html'
   *
   * @var string
   */
  public $mailType = 'html';
 
  /**
   * Character set (utf-8, iso-8859-1, etc.)
   *
   * @var string
   */
  public $charset = 'UTF-8';
 
  /**
   * Whether to validate the email address
   *
   * @var boolean
   */
  public $validate = false;
 
  /**
   * Email Priority. 1 = highest. 5 = lowest. 3 = normal
   *
   * @var integer
   */
  public $priority = 3;
 
  /**
   * Newline character. (Use “\r\n” to comply with RFC 822)
   *
   * @var string
   */
  public $CRLF = "\r\n";
 
  /**
   * Newline character. (Use “\r\n” to comply with RFC 822)
   *
   * @var string
   */
  public $newline = "\r\n";
 
  /**
   * Enable BCC Batch Mode.
   *
   * @var boolean
   */
  public $BCCBatchMode = false;
 
  /**
   * Number of emails in each BCC batch
   *
   * @var integer
   */
  public $BCCBatchSize = 200;
 
  /**
   * Enable notify message from server
   *
   * @var boolean
   */
  public $DSN = false;
 
}
Step 3: Now Go To Your Controller/method And Just Use/call The Library/class
public function yourMethod(){
   $message = "Please activate the account ".anchor('user/activate/'.$data['u_link'],'Activate Now','');
   $email = \Config\Services::email();
   $email->setFrom('ci-4-project@phpcodingstuff.com', 'your Title Here');
   $email->setTo($data['u_email']);
   $email->setSubject('Your Subject here | phpcodingstuff.com');
   $email->setMessage($message);//your message here
 
   $email->setCC('another@emailHere');//CC
   $email->setBCC('thirdEmail@emialHere');// and BCC
   $filename = '/img/yourPhoto.jpg'; //you can use the App patch 
   $email->attach($filename);
    
   $email->send();
   $email->printDebugger(['headers']);
}

I hope it can help you...

Leave a Reply

Your privacy will not be published. Required fields are marked *

We'll share your Website Only Trusted.!!

close