【问题标题】:Unable load files within library in Codeigniter无法在 Codeigniter 的库中加载文件
【发布时间】:2017-05-09 13:12:35
【问题描述】:

我在 Controller 中编写了一个函数来使用 PHPMailer,它运行良好。之后我经常需要这个函数,最终我决定编写库。但是当这样做并在控制器中加载库时,它会出现这样的错误:

消息:调用未定义的方法 PHPMailerOAuth::isSMTP()

毕竟我发现路径有问题!我已经尝试过你的想法,但它不起作用! 我已经尝试将 Controller 作为库 我试过include(),require_once(),require,有或没有APPATH。 我已经尽可能多地搜索了。即使我读过Third Party,但我不明白。 有没有办法在库中加载 PHPMailer 文件? 提前谢谢你。

这是一个名为 PHPMailer.php 的库

class PHPMailer {

public function singleMail($setFromTitle,$setToMail,$setToName,$setSubject,$setMessage)
{
    date_default_timezone_set('Etc/UTC');
    require 'vendor/phpmailer/phpmailer/PHPMailerAutoload.php';
    require 'vendor/autoload.php';
    $mail = new PHPMailerOAuth;
    $mail->CharSet = 'UTF-8';
    $mail->isSMTP();
    $mail->SMTPDebug = 2;
    $mail->Debugoutput = 'html';
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->AuthType = 'XOAUTH2';
    $mail->oauthUserEmail = "XXX@gmail.com";
    $mail->oauthClientId = "XXX";
    $mail->oauthClientSecret = "XXX";
    $mail->oauthRefreshToken = "XXX";
    $mail->setFrom('XXXy@zounkan.com', $setFromTitle);
    $mail->addAddress($setToMail, $setToName);
    $mail->Subject = $setSubject;
    $mail->msgHTML($setMessage);
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
}

这就是我在 Controller 的函数中加载这个库的方式:

$this->load->library('PHPMailer');
$this->phpmailer->singleMail($setFromTitle,$setToMail,$setToName,$setSubject,$setMessage);

【问题讨论】:

  • 向我们展示您的代码。
  • 这就是我所拥有的一切。
  • 您是否尝试过在课堂外使用 require ?
  • 我知道什么是 Phpmailer,但你没有展示你的整个代码。我在任何地方都没有看到PHPMailerOAuth 课程。
  • 问题不在于路径,问题是类PHPMailerOAuth 没有方法isSMTP。只是PHPMailer类有这个方法。

标签: php codeigniter phpmailer


【解决方案1】:

据PHPMailer的主人说,他帮助了我,最终解决了这个问题! 它应该发生在每个程序员身上,当我修复它时,我感到很惊讶!问题是关于类名!我将 PHPMailer 类定义为库的类,这是不允许的!所以上面的代码(我已经提到过)我应该试试这个,它也可以正常工作:

class Sendingmail {
     public function singleMail($setFromTitle,$setToMail,$setToName,$setSubject,$setMessage) {
          // Rest of codes
     }
}

所以不要将你的类命名为 PHPMailer 或类似的东西,它可能已经在核心函数中定义了!

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2011-06-14
    • 2015-06-08
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多