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.
voici un guide
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 .
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
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;
}
}
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;)
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