Yii,PHPMailer无法加载

时间:2014-08-28 18:07:32

标签: php email yii phpmailer

我尝试了几天使用gmail从本地服务器发送电子邮件的许多方法..我曾经使用yii扩展程序,但过了一段时间,它无法正常工作,我试图添加整个PHPMailer并使用正确的方式。

这是我的代码:

static function gmail($email)
{
    $mail = new phpmailer();
    $mail->IsSMTP();
    $mail->Host = "smtp.gmail.com";
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "tls";
    $mail->Port = 587;
    $mail->Username = "mail@gmail.com";
    $mail->Password = "password"; //best to keep this in your config file
    $mail->Subject = 'subject';
    $mail->Body = 'message';
    $mail->addAddress($email);
    $mail->send();
}

我从Github下载了PHPMailer库并将所有内容解压缩到components文件夹。 我添加到配置文件的方式是这样的:

'import'=>array(
    'application.models.*',
    'application.components.*',
    'application.components.PHPMailer.*'
),

第一次尝试时我收到此错误include(phpmailer.php): failed to open stream: No such file or directory

更新:我忘了说,我这样访问此函数的方式是Mailer::gmail('$this->email');,其中Mailer.php具有gmail功能。

3 个答案:

答案 0 :(得分:0)

仔细检查你的php.ini文件以确保phpmailer位于include_path中,因为除了基于你提供的代码之外,一切看起来都不错。

(很抱歉,我会在评论中加入此内容,但我仍然无法发表评论。)

答案 1 :(得分:0)

我不太确定,我使用的是几个月的Yiis phpmailer扩展程序,它总能很好地工作。

然而,尝试使用Github的东西:

require_once <PATH TO PHPMAILER> . 'class.phpmailer.php';
$mail = new PHPMailer();
[...] Rest of your code here

替换为class.phpmailer.php

的绝对路径

答案 2 :(得分:0)

我能够通过检查gmail历史记录安全性来发送邮件,它显示有人试图通过无效授权访问我的帐户,我最后使用YiiMailer,它有点混淆gmail。

代码是这样的:

$mail = new YiiMailer();
//$mail->clearLayout();//if layout is already set in config
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "account@gmail.com";
$mail->Password = "password";
$mail->setFrom('no-reply@strandedgrounds.sr', 'Stranded Grounds');
$mail->setSubject('Recuperacion de contraseña');
$mail->AddAddress("mail@hotmail.com");
$mail->send();