在Codeigniter

时间:2017-05-09 13:12:36

标签: php codeigniter phpmailer

我在Controller中编写了一个使用PHPMailer的函数,它运行正常。之后我经常需要这个功能,最后我决定写库。但是当这样做并在Controller中加载库时,它有这样的错误:

  

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

毕竟我发现路径有问题!我已经尝试过你所想的但它不起作用! 我已经尝试过Controller作为库 我尝试了include()require_once()require,有或没有APPATH。 我尽可能多地搜索。即使我读过Third Party,但我不明白。 有没有想过在Library中加载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);

1 个答案:

答案 0 :(得分:0)

据PHPMailer的老板说,他帮助我并最终解决了这个问题! 它应该发生在每个程序员身上,当我修复它时我很惊讶!问题是关于班级名称!我将PHPMailer类定义为Library的类,不允许这样做!所以上面的代码(我提到的那个)我应该尝试这个并且它也可以正常工作:

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

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