2014-08-28 3 views
0

im пытается в течение нескольких дней много способов отправить электронную почту с локального сервера с помощью 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(); 
} 

я скачал библиотеку PHPMailer из Github и экстрагируют все папки компонентов. Путь, как я добавил в конфигурационный файл выглядит так:

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

на первой попытке я получаю эту ошибку include(phpmailer.php): failed to open stream: No such file or directory

Update: я забыл сказать, так как я получить доступ к этой функции таким образом Mailer::gmail('$this->email');, где Mailer.php имеет функцию gmail.

+0

смотреть ваше дело. При взгляде в Github класс называется 'PHPMailer', а не' phpmailer'. Также я не уверен, работает ли Phpmailer из коробки вместе с Yii. Но есть удобное расширение прав [здесь] (http://www.yiiframework.com/extension/phpmailer/). –

+0

@chris --- Я пробовал с 'PHPMailer' и до сих пор не нахожу класс. Я также пробовал с этим расширением, и он не дает мне ошибку, но не отправляет почту. У меня есть stunnel, установленный и запущенный на всякий случай – nosthertus

+0

Следите за своим цитированием - я думаю, что строка в вашем редакторе должна быть 'Mailer :: gmail ($ this-> email);'. Одиночные кавычки не приведут к его передаче в экземпляре. – Synchro

ответ

0

Дважды проверьте файл php.ini, чтобы убедиться, что phpmailer находится в include_path, потому что кроме этого на основе кода, который вы предоставили, все выглядит хорошо.

(К сожалению, поставил бы это в комментариях, но я до сих пор не может комментировать только пока.)

+0

php.ini не нужен, если вы собираетесь отправлять электронные письма с помощью smtp-аутентификации. или вот что я думаю – nosthertus

+1

@nosthertus - О, хорошо, я просто собирался на основе ошибки включения, которую вы получали. Кроме того, как упоминал Крис выше ... Я считаю, что использую phpmailer, на который он ссылается (что всегда хорошо срабатывало для меня). –

0

Я не совсем уверен, я использую расширение PHPMailer Yiis в течение нескольких месяцев, и он всегда работал очень Что ж.

Однако попробовать это с 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('no-reply[email protected]', 'Stranded Grounds'); 
$mail->setSubject('Recuperacion de contraseña'); 
$mail->AddAddress("[email protected]"); 
$mail->send(); 
Смежные вопросы