1)Создаём предварительно почту на yandex. Можно с делегированием почты на яндекс, можно чисто на яндексе.
2)выставляем в файле web, настройки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => false, 'htmlLayout'=>false, 'textLayout'=>false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.yandex.ru', 'username' => 'admin@xxxxxx.ru', 'password' => 'xxxxxxxxx', 'port' => '465', 'encryption' => 'ssl', ], ], |
3)Самая простая отправка smtp
|
Yii::$app->mailer->compose() ->setTo('email кому отправляем') ->setFrom([ 'admin@xxxxxx.ru -зарегистрированная почта яндекса'=> 'имя отправителя']) // выставить почту . Ту самую, от которой и настроена отправка в конфиге. У нас это admin@xxxxxx.ru.Если не выставить , то хана. Через яндекс не отправишь ->setTextBody('text письма') ->send(); |
Вот вариант, который по умолчанию прописан внутри ContactForm.php берет почту из настроек:
|
Yii::$app->mailer->compose() ->setTo($email) //->setFrom([$this->email => $this->name]) - Это неправильная запись, тк. $this->email приходит значение из формы. А оно обязательно будет отличным от имени почты яндекса ->setFrom([\Yii::$app->params['supportEmail'] => $this->name]) - это правильная, если в конфиге у вас прописан supportEmail- ему и отправим ->setTextBody($this->body) ->send(); |
Если не прописана почта, то надо напрямую прописать.
|
Yii::$app->mailer->compose() ->setTo($email) ->setFrom(['admin@xxxxxx.ru' => 'имя отправителя']) ->setTextBody('тело письма') ->send(); |
Можно сделать шаблон для отправки методами Yii2, для этого создаем файл /mail/contact.php .
сам файл
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<div class="table-responsive"> <table style="width: 100%; border: 1px solid #ddd; border-collapse: collapse;"> <thead> <tr> <td style="padding: 8px; border: 1px solid #ddd;">Имя</td> <td style="padding: 8px; border: 1px solid #ddd;"><?=$model->name?></td> </tr> <tr> <td style="padding: 8px; border: 1px solid #ddd;">е-майл</td> <td style="padding: 8px; border: 1px solid #ddd;"><?=$model->email?></td> </tr> <tr> <td style="padding: 8px; border: 1px solid #ddd;">Сообщение</td> <td style="padding: 8px; border: 1px solid #ddd;"><?=$model->body?></td> </tr> </tbody> </table> </div> |
прописываем отправку
|
Yii::$app->mailer->compose('contact', ['model' => $this]) ->setTo($email) ->setFrom([\Yii::$app->params['supportEmail'] => $this->name]) ->setTextBody($this->body) ->send(); |
Здесь:
compose(‘contact’, [‘model’ => $this])- первое значение это шаблон contact.php в папке /mail/contact.php
а [‘model’ => $this] -переменная model которая передаётся в шаблон. $this- не обязателен, вместо него может что угодно, любая переменная.
\Yii::$app->params[‘supportEmail’] — код который берет значения из массива config/params.php
Цены
1500 р/чБолее подробно тут: https://ftask.ru/цены