首页 文章

Codeigniter Composer Phpmailer

提问于
浏览
1

我正在通过Composer与Codeigniter PHPMailer斗争 . 我收到这个错误:

Class 'PHPMailer' not found

我有CI版本3.1.5,我使用以下命令编写了PHPMailer 6.0.0:

composer require phpmailer/phpmailer

在我的根文件夹中,所以它创建了这样的东西:

/CI_root
 |-- application
 |-- system
 |-- vendor
 |   |-- phpmailer
 |       |-- phpmailer
 |           |-- language
 |           |-- src
 |-- composer.json

在我的application / config / config.php里面有这一行

$config['composer_autoload'] = FCPATH."vendor/autoload.php";

PS . :我也尝试过改为 $config['composer_autoload'] = "./vendor/autoload.php";

最后,根composer.json

{
"description": "The CodeIgniter framework",
"name": "codeigniter/framework",
"type": "project",
"homepage": "https://codeigniter.com",
"license": "MIT",
"support": {
    "forum": "http://forum.codeigniter.com/",
    "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki",
    "irc": "irc://irc.freenode.net/codeigniter",
    "source": "https://github.com/bcit-ci/CodeIgniter"
},
"require": {
    "php": ">=5.3.7",
    "phpmailer/phpmailer": "^6.0",
    "mpdf/mpdf": "^6.1"
},
"suggest": {
    "paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"require-dev": {
    "mikey179/vfsStream": "1.1.*",
    "phpunit/phpunit": "4.* || 5.*"
}

}

在控制器内部

public function index()
{
    $mail = new PHPMailer();
    // other of stuff

有趣的是mpdf加载好了 . 我在这里错过了什么吗?

提前致谢!

2 回答

  • 1

    Composer自动加载应该是TRUE:

    $config['composer_autoload'] = TRUE;
    

    这是因为CodeIgniter已经知道你的作曲家自动加载文件将在 /application/vendor

    在您要使用PHP邮件程序的文件顶部,可能需要以下内容:

    use PHPMailer;
    

    实际上,在PHPMailer文档中,它们显示:

    //Import PHPMailer classes into the global namespace
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
  • 5

    我只是在课前添加到顶部

    use PHPMailer\PHPMailer\PHPMailer;
    

    然后在控制器方法里面,

    只需像往常一样使用它:

    $mail = new PHPMailer;
    

相关问题