отправка писем в YII2 через контактную форму отправка на другой адрес - PullRequest
0 голосов
/ 12 марта 2019

У меня проблема при отправке сообщений электронной почты через форму из вкладки контактов. Я должен был настроить в web.php как

'mailer' => [                
    'class' => 'yii\swiftmailer\Mailer',               
    'transport' => [                   
        'class' => 'Swift_SmtpTransport',                   
        'host' => 'smtp.gmail.com',                  
        'username' => 'email@gmail.com',                  
        'password' => 'PASSWORD',                   
        'port' => '587',                  
        'encryption' => 'tls'               
    ],
    'useFileTransport' => false,
]

но когда я отправляю заполненную форму, я не получаю никаких сообщений на свой почтовый ящик. Я тоже не получаю никакой ошибки. Когда я проверяю в Yii Debugger, сообщения журнала показывают, что:

13:14:10.377    info    yii\mail\BaseMailer::send   Sending email "dasdasdasd" to "admin@example.com"
13:14:10.377    info    yii\swiftmailer\Mailer::sendMessage Sending email "dasdasdasd" to "admin@example.com"

Почему он показывает, что отправил сообщение на адрес, отличный от того, что я дал? Где проблема?

SiteController:

public function actionContact() {
    $model = new ContactForm();
    if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) {
        Yii::$app->session->setFlash('contactFormSubmitted');

        return $this->refresh();
    }
    return $this->render('contact', [
        'model' => $model,
    ]);
}
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>

    <?= $form->field($model, 'name')->textInput(['autofocus' => true]) ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'subject') ?>
    <?= $form->field($model, 'body')->textarea(['rows' => 6]) ?>
    <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
        'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
    ]) ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
    </div>

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

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Разрешить менее защищенным приложениям доступ к вашей учетной записи Gmail

Чтобы отключить эту функцию безопасности:

  1. Нажмите здесь, чтобы получить доступ к менее защищенному приложениюв моей учетной записи .
  2. Рядом с «Разрешить менее безопасные приложения: ВЫКЛ.» выберите тумблер для включения.

Этот параметр может быть недоступендля:

  • Учетные записи с включенной двухэтапной проверкой: для таких учетных записей требуется пароль приложения для менее защищенных приложений доступ.
  • G Suiteпользователи: Этот параметр скрыт, если ваш администратор заблокировал менее безопасный доступ к учетной записи приложения.

Ссылка на источник

Yii::$app->mailer->compose()
    ->setFrom('<fromUsername>@<yourDomain>')
    ->setTo('<user@Email>')
    ->setSubject('Уведемление с сайта <yourDomain>') // тема письма
    ->setTextBody('Текстовая версия письма (без HTML)')
    ->setHtmlBody('<p>HTML версия письма</p>')
    ->send();

Если вы используете localhost, выследует «прокомментировать» настройки swiftmailer. Например, для XAMPP вам нужно сделать соответствующие настройки и вам не нужен swiftmailer.Настройте в (файл php.ini - sendmail.ini).

А для других программ необходимые настройки ...

0 голосов
/ 12 марта 2019

хорошо, я понял это с твоим предложением rob006.Его следует изменить с

if ($model->load(Yii::$app->request->post()) &&
$model->contact(Yii::$app->params['adminEmail'])

на

if ($model->load(Yii::$app->request->post()) && $model->contact($_POST['ContactForm']['email']))

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...