2014-10-17 6 views
0

Я пытаюсь отправить почту с помощью Yii простой почтовик ...Yii Mailer не работает

Я последовал шаг:

http://www.yiiframework.com/extension/yii-simple-mailer/

и загрузить расширение и положить в папку Yii расширения:

https://github.com/tlikai/YiiMailer

Затем поместите код конфиг/main.php:

'mailer' => array(
     // for smtp 
     'class' => 'ext.mailer.SmtpMailer', 
     'server' => 'theserver', 
     'port' => '25', 
     'username' => 'theadmin', 
     'password' => 'thepassword', 

     // for php mail 
     'class' => 'ext.mailer.PhpMailer', 
    ), 

Тогда в моем контроллере я написал код для отправки почты:

$to = '[email protected]'; 

$subject = 'Hello Mailer'; 
$content = 'Some content'; 

Yii::app()->mailer->send($to, $subject, $content); 

Затем браузер дал мне ошибку: недвижимости «PhpMailer.server» не определен.

Я что-то пропустил в своем коде?

+0

является класс расширения добавлен в ваш конфигурационный файл? – nosthertus

+0

@nosthertus ''class' => 'ext.mailer.SmtpMailer',' не считать добавленным? – TheSmile

+0

try 'import => array ('ext.mailer. *');' В вашем файле конфигурации – nosthertus

ответ

1

В конфигурации/main.php

'Smtpmail'=>array(
     'class'=>'ext.smtpmail.PHPMailer', 
     'Host'=>"localhost", 
     'Username'=>'[email protected]', 
     'Password'=>'wakakaka', 
     'Mailer'=>'smtp', 
     'Port'=>25, 
     'SMTPAuth'=>true, 
    ), 

В компоненте/controller.php

public function mailsend($to,$from,$from_name,$subject,$message) 
{ 
    $mail = Yii::app()->Smtpmail; 
    $mail->SetFrom($from,$from_name); 
    $mail->Subject = $subject; 
    $mail->MsgHTML($message); 
    $mail->AddAddress($to, ""); 

    // Add CC 
    if(!empty($cc)){ 
     foreach($cc as $email){ 
      $mail->AddCC($email); 
     } 
    } 

    // Add Attchments 
    if(!empty($attachment)){ 
     foreach($attachment as $attach){ 
      $mail->AddAttachment($attach); 
     } 
    } 

    if(!$mail->Send()) { 
     return false; // Fail echo "Mailer Error: " . $mail->ErrorInfo; 
    }else { 
     return true; // Success 
    } 
} 

В контроллере

public function actionSendMail(){ 
    $token = $_POST['YII_CSRF_TOKEN'];    
    if ($token !== Yii::app()->getRequest()->getCsrfToken()){ 

     Yii::app()->end(); 
    } 
     $to = '[email protected]'; 
     $from = 'localhost'; 
     $from_name = 'mface'; 
     $subject = 'testing'; 
     $message = 'testing'; 


if($token == true){ 
     $util = new Utility();  

     $util->detectMobileBrowser(); 

     $util->checkWebSiteLanguageInCookies(); 

     $this->layout = "masterLayout"; 
     $this->render('mailsend'); 

     $this->mailsend($to,$from,$from_name,$subject,$message); 
}else{ 

     print_r("Not Sent"); 
     die(); 
} 

}

Процесс не проблема идти правильно, но не получать почту

+0

Вы должны вызвать эту функцию из своего контроллера $ this-> mailsend ($ to, $ from, $ from_name, $ subject, $ message, $ cc, $ attachment); не в mailsend. это перейдет в бесконечный цикл. Поэтому удалите отсюда и вызовите требуемый контроллер. –

+0

@YatinMistry да я поставил мой контроллер не работает – TheSmile

+0

@YatinMistry на самом деле я хочу проверить электронную почту ... пользователь нажимает кнопку отправки, тогда система автоматически отправит электронное письмо для них – TheSmile

1

Изменить ваш порт в pathtowebroot/protected/config/main.php

'Smtpmail'=>array(
     'class'=>'ext.smtpmail.PHPMailer', 
     'Host'=>"smtp.gmail.com", 
     'Username'=>'[email protected]', 
     'Password'=>'wakakaka', 
     'Mailer'=>'smtp', 
     'Port'=>465, 
     'SMTPAuth'=>true, 
     'SMTPSecure' => 'ssl' 
    ), 
+0

нет такой вещи, как main/config.php – Gogol

+0

@ noc2spam ツ Типичная ошибка. –

+1

Спасибо за исправление. Я отказался от своего отрицательного голоса. Приветствия :) – Gogol