2014-05-05 65 views
2

我正在嘗試發送郵件。我想使用Gmail服務器發送,現在我只是希望它發送到相同的帳戶從它被髮送。Yii,Yiimailer不發送郵件(沒有顯示錯誤)

我使用YiiMailer延伸,因爲它似乎很容易使用,這是動作我在我的控制器:

public function actionContact() 
    { 
     $model=new ContactForm; 
     if(isset($_POST['ContactForm'])) 
     { 
      $model->attributes=$_POST['ContactForm']; 
      if($model->validate()) 
      { 
       $name='=?UTF-8?B?'.base64_encode($model->name).'?='; 
       $subject='=?UTF-8?B?'.base64_encode($model->subject).'?='; 
       $headers="From: $name <{$model->email}>\r\n". 
        "Reply-To: {$model->email}\r\n". 
        "MIME-Version: 1.0\r\n". 
        "Content-Type: text/plain; charset=UTF-8"; 

       // mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers); 

       $mail = new YiiMailer('contact', array(
        'message'=>$model->body, 
        'name'=>$model->name, 
        'description'=>'Contact form' 
       )); 

       $mail->setFrom($model->email, $model->name); 
       $mail->setSubject($model->subject); 
       $mail->setTo(Yii::app()->params['adminEmail']); 

       $mail->isSMTP(); 
       $mail->host = "smtp.gmail.com"; 
       $mail->port = 465; 
       $mail->Username = "[email protected]"; 
       $mail->Password = "password"; 

       if($mail->send()) 
       { 
        Yii::app()->user->setFlash('contact','Gracias por contactarnos, te responderemos tan pronto como podamos.'); 
        $this->refresh(); 
       } 

       else 
       { 
        Yii::app()->user->setFlash('error','Error enviando correo.'); 
        $this->refresh(); 
       } 
      } 
     } 
     $this->render('contact',array('model'=>$model)); 
    } 

的adminMail就像[email protected]

相同

我不知道如果我有正確的設置爲Gmail,我敢肯定,該功能的條件不存在,所以它什麼都不做。

只是爲了確保。這是我的配置:

// autoloading model and component classes 
    'import'=>array(
     'application.models.*', 
     'application.components.*', 
     'ext.YiiMailer.YiiMailer' 
    ), 

帕金森病:我發現周圍帖子的gmail設置。我不確定他們是否改變了設置。

回答

2

嘗試使用方法getError()找出錯誤是(你可以使用特殊的調試選項,以獲取有關可能錯誤的詳細信息)

$mail->SMTPDebug = 1; //optional 

if($mail->send()) 
{ 
    Yii::app()->user->setFlash('contact','Gracias por contactarnos, te responderemos tan pronto como podamos.'); 
    $this->refresh(); 
} 
else 
{ 
    echo '<pre>'; 
    var_dump($mail->getError()); 
    echo '</pre>'; 
    exit; 
} 

Additionaly,請嘗試以下操作:

  • ADD $mail->SMTPSecure = 'ssl';或$mail->SMTPSecure = 'tls';
  • ADD $mail->SMTPAuth = true;

這個問題可能會感興趣:send email using Gmail SMTP server through PHP Mailer

+0

它不會做任何事情,如果(),也不其他()是怎麼回事..它只是需要像5秒,然後刷新頁面而不使用閃光燈。 – nosthertus

+0

我編輯了我的代碼:使用var_dump然後退出 - 這將停止PHP繼續。 –

+0

給了我:SMTP連接()失敗。 – nosthertus

0

這對我的作品!

  $mail = new YiiMailer(); 
      $mail->IsSMTP();          // Set mailer to use SMTP 
      $mail->Host = 'smtp.gmail.com'; // Specify main and backup server 
      $mail->SMTPAuth = true;        // Enable SMTP authentication 
      $mail->Username = 'username';       // SMTP username 
      $mail->Password = 'password';       // SMTP password 
      $mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 
      $mail->Port = 587; 
         //set mail properties 
      $mail->setFrom('[email protected]', 'YYY'); 

     $mail->setTo($model->to_email); 

     $mail->setSubject($model->subject); 
     $mail->setBody($model->message, 'text/html'); 

     $mail->send(); 

您需要設置smtpauthtrue使用Gmail執行動作後,發送email.Ckeck你的sendmail框時!

+0

你能告訴我你在用什麼服務器?因爲我不能使這個在wamp中,php_smtp不再兼容。 – nosthertus

0

我解決了這個由安裝安全通道,因此OpenSSL是啓用的,讓我發送電子郵件從我的服務器

相關問題