"how to integrate phpmailer with codeigniter 3" Answer’s

0

here is a guide

1. installing PHP Mailer

Download the latest PHPMailer Build from Github. You can find the project here

Click now on "clone or download" and download it as zip - as in the image below is shown.

The folder in the zip is called PHPMailer-master. Unzip this in your application/third_party/ folder and rename the folder to phpmailer. You should see something like this

2. PHP Mailer Library

Imho its best to create a library which handles your PHPMailer Object (Phpmailer_library.php) This library could look like

class Phpmailer_library
{
    public function __construct()
    {
        log_message('Debug', 'PHPMailer class is loaded.');
    }

    public function load()
    {
        require_once(APPPATH."third_party/phpmailer/PHPMailerAutoload.php");
        $objMail = new PHPMailer;
        return $objMail;
    }
}

3. Using this library in one of your controllers, models etc.

class Welcome extends CI_Controller {


    public function index()
    {
        $this->load->library("phpmailer_library");
        $objMail = $this->phpmailer_library->load();
    }
}

i think this should pretty much do the job. If you've any troubles, don't hesitate to ask ;)


Update 25.06.2018

Since the PHPMailer guys removed the autoloader you've two options now:

1.) via Composer

for those who didn't know - Codeigniter supports Composer - you simply have to activate the autoload - you can find this in your config.php

$config['composer_autoload'] = true;

For more informations take a look here

After that - run composer like

composer require phpmailer/phpmailer

You now should have within your application/vendor folder the phpmailer files.

The library should look like

class Phpmailer_library
{
    public function __construct()
    {
        log_message('Debug', 'PHPMailer class is loaded.');
    }

    public function load()
    {
        $objMail = new PHPMailerPHPMailerPHPMailer();
        return $objMail;
    }
}

2.) download

follow step 1

The library should look like

class Phpmailer_library
{
    public function __construct()
    {
        log_message('Debug', 'PHPMailer class is loaded.');
    }

    public function load()
    {
        require_once(APPPATH.'third_party/phpmailer/src/PHPMailer.php');
        require_once(APPPATH.'third_party/phpmailer/src/SMTP.php');

        $objMail = new PHPMailerPHPMailerPHPMailer();
        return $objMail;
    }
}

and everything else should remain the same

Wednesday, March 31, 2021
 
BartmanEH
answered 11 Months ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :