使用来自yii2的localhost通过phpmailer

时间:2015-10-03 20:31:55

标签: localhost yii2 phpmailer contact

我创建了联系表单,其中包含保存在数据库中的字段名称,电子邮件,电话,消息。 我希望联系表单在Yii2中通过localhost使用phpmailer发送电子邮件。我尝试跟进仍然无法发送电子邮件的http://www.yiiframew.../zyx-phpmailer/链接。

采取的措施 1)我已经通过作曲家下载了phpmailer。 2)我在config文件夹中设置了web.php为

'mail' => [
 'class' => 'zyx\phpmailer\Mailer',
 'viewPath' => 'yii2Basic',
 'useFileTransport' => false,
 'config' => [
 'mailer' => 'smtp',
 'host' => 'smtp.gmail.com',
 'port' => '587',
 'smtpsecure' => 'tsl',
 'smtpauth' => true,
 'username' => 'mygmail',
 'password' => '*******',
   ],
 ],

3)控制器动作

public function actionCreate()
 {
    $model = new Contact();

    if ($model->load(Yii::$app->request->post()) ) 
    {

        Yii::$app->mail->compose()
        ->setFrom(['mygmail' => 'My Example Message'])
        ->setTo([$model->email => $model->name])
        ->setSubject('test subject')
        ->setTextBody($model->message)
        ->send();

        $model->save();
       //return $this->redirect(['view', 'id' => $model->id]);
       return $this->redirect(['index']);

       } else {
       return $this->render('create', [
      'model' => $model,
     ]);
   }
 }

仍然将代码保存到我的数据库但不向gmail发送电子邮件。

请在我出错的地方帮助我,我该怎么办。

1 个答案:

答案 0 :(得分:0)

从[下载php邮件程序]它用于从localhost发送邮件   下载https://github.com/PHPMailer/PHPMailer如果您的系统不支持phps,则更改phpmailer / examples-> gmail.php

mail.php->它位于php邮件程序之外

<?php
require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'hello@gmail.com';
$mail->Password = "hello";
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->From = 'hello@gmail.com';
$mail->FromName ='hello';
$mail->addAddress('hi@gmail.com', 'hi');

$mail->addReplyTo('hello@gmail.com', 'hello');

$mail->WordWrap = 50;
$mail->isHTML(true);

$mail->Subject = 'Using PHPMailer';
$mail->Body    = 'Hi Iam using PHPMailer library to sent SMTP mail from localhost';

if(!$mail->send()) {
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Message has been sent';

尝试这个click here这是解决方案