Swiftmailer и SMTP Gmail в yii2 - PullRequest
       26

Swiftmailer и SMTP Gmail в yii2

0 голосов
/ 27 апреля 2018

Я пытался настроить swiftmailer в yii2 advanced. Я прочитал учебник и использую здесь код, но у меня все еще есть ошибка.

В моем случае, гость должен предоставить свое имя и адрес электронной почты перед загрузкой Ebook. Затем они получат письмо из моего офиса, в котором будет ссылка на скачивание электронной книги.

Моя конфигурация в common/config/main-local.php

'components' => [
    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@common/mail',
        'useFileTransport' => false,
        'transport' => [ 
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',
            'username' => 'myaccount@gmail.com',
            'password' => 'password',
            'port' => '465',
            'encryption' => 'ssl',

        ],     
    ],
],

По моему controller/GuestController.php

public function actionCreate()
{       
    $model = new guest();
    if($model->load(Yii::$app->request->post())){
        return Yii::$app->mailer->compose()
        ->setFrom('myaccount@gmail.com')
        ->setTo($model->email)
        ->setSubject('halo')
        ->setTextBody('body')
        ->send();
        $model->save();
            return $this->redirect(['buku/index']);
    }
    else{
        return $this->renderAjax('create',[
                'model' => $model,
        ]);
    }
}

Форма Гость

<div class="guest-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'nama')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>

<?php
    echo Alert::widget([
    'options' => [
        'class' => 'alert-warning',
    ],
    'body' => '[Alert] Check your email for Download',
    ]);
?> 
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>

И моя ошибка,

Swift_TransportException Не удалось установить соединение с хостом smtp.gmail.com [# 0]

Как я могу это исправить? Спасибо, Решено

1 Ответ

0 голосов
/ 27 апреля 2018

Я всегда использовал настройки с encryption в качестве tls и портом 587, и вам не нужно устанавливать 'useFileTransport' => false,, так как теперь по умолчанию используется значение false, см. here

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer' ,
            'viewPath' => '@common/mail',
            'transport' => [
                'class' => 'Swift_SmtpTransport' ,
                'host' => 'smtp.gmail.com' ,
                'username' => 'myaccount@gmail.com',
                'password' => 'password',
                'port' => '587' ,
                'encryption' => 'tls' ,
            ] ,
        ] ,
...