【问题标题】:Yii2: Not able to send Email from formYii2:无法从表单发送电子邮件
【发布时间】:2015-07-15 12:46:18
【问题描述】:
<div class="status-form">

    <?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model,'job_code')->widget(Select2::classname(),[
            'data'=>ArrayHelper::map(CreateJob::find()->all(),'job_id','job_code'),
            'language'=>'en',
            'options'=>['placeholder' => 'Select Job Code','id'=>'empCode'],
            'pluginOptions' =>[

            ],
        ]); ?>

    <?= $form->field($model, 'job_code')->hiddenInput()->label(false); ?>

    <?= $form->field($model, 'client_code')->textInput(['readonly' => true]) ?>

    <?= $form->field($model, 'company_name')->textInput(['readonly' => true]) ?>

    <?= $form->field($model, 'emp_email')->hiddenInput()->label(false); ?>

    <?= $form->field($model, 'emp_mobile')->hiddenInput()->label(false); ?>

    <?= $form->field($model, 'emp_first_name')->hiddenInput()->label(false); ?>

    <?= $form->field($model, 'emp_last_name')->hiddenInput()->label(false); ?>

    <?= $form->field($model, 'job_description')->textarea(['rows' => 6]) ?>

    <?= $form->field($model, 'status')->radioList(array('Approved'=>'Approved','Digital'=>'Digital','CDP'=>'CDP','Print'=>'Print','Other Process'=>'Other Process','Packing'=>'Packing','Dispatch'=>'Dispatch'),['class' => $model->status ? 'btn-group' : 'btn btn-default'],array('onChange'=>'toggleSSN();'),['id'=>'radioButtons'] );                   ?>


    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

控制器

public function actionCreate()
    {
        $model = new Status();
       $email = new Emails();

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

                $value=Yii::$app->mailer->compose()
                ->setFrom(["xyz@gmail.com"])
                ->setTo($model->emp_email)
                ->setsubject('Job Status')
                ->setHtmlBody($model->job_description)
                ->send();

            $model->save();
            $email->save();

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

我想向客户发送有关其当前工作状态的电子邮件。当用户粘贴提交时,它应该从填写的表单字段向客户发送电子邮件。 我还需要为此电子邮件设置模板,以便只有客户信息不会改变其他部分。

【问题讨论】:

  • 为什么在form和controller中有两个mail函数?
  • 我就说吧,控制器的功能够吗?
  • 你没有提到你得到了什么错误。是不是邮件发不出去。还要从您的表单中删除不必要的邮件代码。
  • 无法发送邮件,邮件无法发送
  • ' 'mailer'=>[ 'class'=> 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp .gmail.com', '用户名' => 'xyz@gmail.com', '密码' => '***', '端口' => '587', '加密' => 'tls', ], ' 这是在组件中

标签: php mysql email yii2


【解决方案1】:

您尝试在视图中显示布尔值的地方有不必要的代码,请删除:

<?= 
Yii::$app->mailer->compose()
->setFrom('xyz@gmail.com')
->setTo('abc@hotmail.com')
->setSubject('Message subject')
->setTextBody('Plain text content')
->setHtmlBody('<b>HTML content</b>')
->send();
?>

您应该在控制器中通过 var_dump($value) 检查返回发送函数的值,如果返回 false,则很有可能您的服务器配置不正确。

如果您使用的是 Ubuntu,请阅读“如何安装 ssmtp”和“如何配置 ssmtp”来自:http://www.havetheknowhow.com/Configure-the-server/Install-ssmtp.html

【讨论】:

  • 首先,更改您的密码:P。第二个我忘了它不是 mail() 函数第二个设置 'useFileTransport'=>'false' 在你的配置中:'components' => [ ... 'mail' => [ 'class' => 'yii\swiftmailer\ Mailer', 'useFileTransport'=>'false' ], ],
  • 做了这个改变,但仍然没有发送电子邮件:(
【解决方案2】:

首先从提交按钮中删除 div class="active form" 然后按钮将起作用。

<div class="form-group">
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多