2014-08-28 25 views
0

即時嘗試多種方式從本地服務器使用Gmail發送電子郵件..我曾經用yii擴展它,但一段時間後,它不工作,我試圖添加整個PHPMailer並以適當的方式製作郵件。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 = "[email protected]"; 
    $mail->Password = "password"; //best to keep this in your config file 
    $mail->Subject = 'subject'; 
    $mail->Body = 'message'; 
    $mail->addAddress($email); 
    $mail->send(); 
} 

我從Github下載PHPMailer的圖書館和提取所有組件的文件夾。 我如何添加到配置文件的方法是這樣的:

'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功能。

+0

看你的情況。通過查看Github,該類被命名爲'PHPMailer'而不是'phpmailer'。另外我不確定Phpmailer是否與Yii一起開箱即用。但有一個方便的擴展權[這裏](http://www.yiiframework.com/extension/phpmailer/)。 – 2014-08-28 18:51:28

+0

@chris ---我用'PHPMailer'嘗試過,但仍未找到該類。我也嘗試過使用該擴展名,它不會給我錯誤,但它不會發送郵件。我有stunnel安裝並運行,以防萬一 – nosthertus 2014-08-28 18:57:56

+0

注意你的引用 - 我認爲你的編輯行應該是'Mailer :: gmail($ this-> email);'。單引號不會導致它在實例中傳遞。 – Synchro 2014-08-28 19:13:37

回答

0

仔細檢查您的php.ini文件以確保phpmailer位於include_path中,因爲除了基於您提供的所有代碼外,其他都看起來不錯。

(對不起,就會把這個意見,但我仍然無法置評,只是還沒有。)

+0

如果你打算用smtp認證發送郵件,則不需要php.ini。或多數民衆贊成在我認爲 – nosthertus 2014-08-28 18:51:35

+1

@nosthertus - 哦好吧,我只是基於包含錯誤,你正在得到。另外,正如克里斯在上面提到的......我相信我正在使用他參考的phpmailer(它一直對我很好用)。 – 2014-08-28 19:02:31

0

我不太清楚,我使用Yiis PHPMailer的擴展數月,它總是很努力好。

然而,試試這個與Github上的東西:

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

與absulute路徑替換爲您class.phpmailer.php

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 = "[email protected]"; 
$mail->Password = "password"; 
$mail->setFrom('[email protected]', 'Stranded Grounds'); 
$mail->setSubject('Recuperacion de contraseña'); 
$mail->AddAddress("[email protected]"); 
$mail->send();