CodeIgniter 4 Send Email With SMTP Example

04-Aug-2020

.

Admin

CodeIgniter 4 Send Email With SMTP Example

Hi Guys

In this example , I will explain you how to send email with SMTP in codeigniter 4. I will show example of send mail in codeigniter using smtp. sending email is very easy because of the new functionality, Now the stable version of the Codeigniter available to download from the official website.

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

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

\Config\Services::serviceName();

// i.e \Config\Services::email();

In this segment, you should know 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: Open File


In this step, i will open file following path.

Path:- /app/config/Email.php

Step2: Update the Email Credentials

Now this step, I will update the Email Credentials.

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.tutsmake.com';

/**

* SMTP Username

*

* @var string

*/

public $SMTPUser = 'abcd@tutsmake.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@tutsmake.com', 'your Title Here');

$email->setTo($data['u_email']);

$email->setSubject('Your Subject here | tutsmake.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']);

}

It will help you...

#Codeigniter