web-dev-qa-db-fra.com

Comment intégrer PHPMailer à Codeigniter 3

Bonjour, j'essaie d'utiliser PHPMailer Library de GitHUB dans mon application Codeigniter.

J'ai téléchargé le code et décompressé dans mon dossier application\library . Il y a donc un dossier appelé vendor dans lequel réside le code source de PHPMailer.

Maintenant, j'ai créé un fichier nommé Bizmailer_Controller.php.

<?php defined('BASEPATH') OR exit('No direct script access allowed');

/**
* 
*/
class Bizmailer_Controller extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();

        require "vendor\phpmailer\phpmailer\PHPMailerAutoload";
        $this->Bizmailer = new PHPMailer();
        //Set the required config parameters
        $this->Bizmailer->isSMTP();                                      // Set mailer to use SMTP
        $this->Bizmailer->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
        $this->Bizmailer->SMTPAuth = true;                               // Enable SMTP authentication
        $this->Bizmailer->Username = '[email protected]';                 // SMTP username
        $this->Bizmailer->Password = 'secret';                           // SMTP password
        $this->Bizmailer->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
        $this->Bizmailer->Port = 465;    
        //return $api;
    }
}

Maintenant, dans mes contrôleurs, j'essaye de le charger comme ceci:

$this->load->library('Bizmailer');
$mail = new Bizmailer();

Et j'ai cette erreur:

Une erreur est survenue

Impossible de charger la classe demandée: Bizmailer

Alors, merci de me guider pour charger ou intégrer cette bibliothèque dans Codeigniter.

8
Rajan

voici un guide

1. installer PHP Mailer

Téléchargez la dernière version de PHPMailer Build depuis Github . Vous pouvez trouver le projet ici

Cliquez maintenant sur "cloner ou télécharger" et téléchargez-le au format Zip - comme indiqué dans l'image ci-dessous .  PHP Mailer Download as Zip

Le dossier dans le zip s'appelle PHPMailer-master . Décompressez-le dans votre dossier application/third_party/et renommez le dossier phpmailer. Vous devriez voir quelque chose comme ceci  enter image description here

2. PHP Bibliothèque de courrier

Je pense qu'il est préférable de créer une bibliothèque qui gère votre objet PHPMailer (Phpmailer_library.php) Cette bibliothèque pourrait ressembler à

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. Utilisation de cette bibliothèque dans l’un de vos contrôleurs, modèles, etc.

class Welcome extends CI_Controller {


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

je pense que cela devrait assez bien faire le travail . Si vous avez des problèmes, n'hésitez pas à demander;)


Mise à jour du 25.06.2018

Depuis que les gars de PHPMailer ont supprimé l'autoloader, vous avez maintenant deux options:

1.) via Composer 

pour ceux qui ne le savaient pas - Codeigniter supporte Composer - vous devez simplement activer le chargement automatique - vous pouvez le trouver dans votre config.php

$config['composer_autoload'] = true;

Pour plus d'informations, jetez un coup d'oeil ici

Après cela, composez comme

composer require phpmailer/phpmailer

Vous devriez maintenant avoir dans votre dossier application/vendor les fichiers phpmailer.

La bibliothèque devrait ressembler à

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

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

2.) télécharger 

suivez l'étape 1

La bibliothèque devrait ressembler à

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 PHPMailer\PHPMailer\PHPMailer();
        return $objMail;
    }
}

et tout le reste devrait rester le même

12
sintakonte

Il existe une bibliothèque php mailer pour Codeigniter 2/3, vous pouvez vérifier this et this .

0
MorganFreeFarm