こんにちは、CodeigniterアプリケーションでGitHUBの PHPMailer Library を使用しようとしています。
コードをダウンロードし、application\library
フォルダーに解凍しました。そのため、PHPMailerのソースコードが存在するvendorというフォルダーがあります。
ここで、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;
}
}
今、私のコントローラーでこのようにロードしようとしています:
$this->load->library('Bizmailer');
$mail = new Bizmailer();
そして、私はこのエラーを取得します:
エラーが発生しました
要求されたクラスをロードできません:Bizmailer
したがって、このライブラリをCodeigniterにロードまたは統合する方法を教えてください。
ここにガイドがあります
Githubから最新のPHPMailer Buildをダウンロードします。プロジェクトを見つけることができます こちら
「クローンまたはダウンロード」をクリックして、Zipとしてダウンロードします-下の画像のように。
Zip内のフォルダーはPHPMailer-masterと呼ばれます。 application/third_party /フォルダーでこれを解凍し、フォルダーの名前をphpmailerに変更します。このようなものが表示されるはずです
PHPMailerオブジェクト(Phpmailer_library.php)を処理するライブラリを作成するのが最善です。このライブラリは次のようになります。
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();
}
}
私はこれがほとんど仕事をするはずだと思います。何か問題があれば、遠慮なく尋ねてください;)
PHPMailerの連中がオートローダーを削除したので、次の2つのオプションがあります。
1。)Composer経由
知らなかった人のために-CodeigniterはComposerをサポートしています-単にオートロードをアクティブにする必要があります-これはconfig.phpで見つけることができます
$config['composer_autoload'] = true;
詳細については、こちらをご覧ください here
その後-composerのように実行
composer require phpmailer/phpmailer
これで、application/vendor
フォルダphpmailer
ファイル。
ライブラリは次のようになります
class Phpmailer_library
{
public function __construct()
{
log_message('Debug', 'PHPMailer class is loaded.');
}
public function load()
{
$objMail = new PHPMailer\PHPMailer\PHPMailer();
return $objMail;
}
}
2。)ダウンロード
手順1に従う
ライブラリは次のようになります
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;
}
}
そして、他のすべては同じままでなければなりません
**
**
最初に、最新の PHPMailerライブラリファイル をダウンロードし、すべてのファイルをCodeIgniterアプリケーションのapplication/third_party /フォルダーに配置します。
ここで、PHPMailerオブジェクトを処理するライブラリ(application/libraries/Phpmailer_lib.php)を作成します。
PHPMailerオブジェクトを返します。
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class PHPMailer_Lib
{
public function __construct(){
log_message('Debug', 'PHPMailer class is loaded.');
}
public function load(){
// Include PHPMailer library files
require_once APPPATH.'third_party/phpmailer/Exception.php';
require_once APPPATH.'third_party/phpmailer/PHPMailer.php';
require_once APPPATH.'third_party/phpmailer/SMTP.php';
$mail = new PHPMailer(true);
return $mail;
}
}
このコードを使用して、コントローラーからPHPMailerを使用してSMTPサーバー経由で電子メールを送信します。
class Email extends CI_Controller{
function __construct(){
parent::__construct();
}
function send(){
// Load PHPMailer library
$this->load->library('phpmailer_lib');
// PHPMailer object
$mail = $this->phpmailer_lib->load();
// SMTP configuration
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = '********';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('[email protected]', 'CodexWorld');
$mail->addReplyTo('[email protected]', 'CodexWorld');
// Add a recipient
$mail->addAddress('[email protected]');
// Add cc or bcc
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');
// Email subject
$mail->Subject = 'Send Email via SMTP using PHPMailer in CodeIgniter';
// Set email format to HTML
$mail->isHTML(true);
// Email body content
$mailContent = "<h1>Send HTML Email using SMTP in CodeIgniter</h1>
<p>This is a test email sending using SMTP mail server with PHPMailer.</p>";
$mail->Body = $mailContent;
// Send email
if(!$mail->send()){
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}else{
echo 'Message has been sent';
}
}
}