//config/web.php 'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.gmail.com', 'username' => 'username@gmail.com', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ],
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'exchange.example.com', // 'username' => '', 'password' => '', 'port' => '25', 'encryption' => '', ], ],
//models/MailerForm.php <?php namespace app\models; use Yii; use yii\base\Model; class MailerForm extends Model { public $fromEmail; public $fromName; public $toEmail; public $subject; public $body; public function rules() { return [ [['fromEmail', 'fromName', 'toEmail', 'subject', 'body'], 'required'], ['fromEmail', 'email'], ['toEmail', 'email'] ]; } public function sendEmail() { if ($this->validate()) { Yii::$app->mailer->compose() ->setTo($this->toEmail) ->setFrom([$this->fromEmail => $this->fromName]) ->setSubject($this->subject) ->setTextBody($this->body) ->send(); return true; } return false; } }
//views/site/mailer.php <?php /* @var $this yii\web\View */ /* @var $form yii\bootstrap\ActiveForm */ /* @var $model app\models\MailerForm */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; $this->title = 'Mailer'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-contact"> <h1><?= Html::encode($this->title) ?></h1> <?php if (Yii::$app->session->hasFlash('mailerFormSubmitted')) : ?> <div class="alert alert-success"> Your email has been sent </div> <?php else : ?> <p> This form for sending email from anywhere to anywhere </p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'mailer-form']); ?> <?= $form->field($model, 'fromName') ?> <?= $form->field($model, 'fromEmail') ?> <?= $form->field($model, 'toEmail') ?> <?= $form->field($model, 'subject') ?> <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?> </div> <?php ActiveForm::end(); ?> </div> </div> <?php endif; ?> </div>
<?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\ContactForm; use app\models\MailerForm; // class SiteController extends Controller { //… … public function actionMailer() { $model = new MailerForm(); if ($model->load(Yii::$app->request->post()) && $model->sendEmail()) { Yii::$app->session->setFlash('mailerFormSubmitted'); return $this->refresh(); } return $this->render('mailer', [ 'model' => $model, ]); } //… … }
echo Nav::widget([ 'options' => ['class' => 'navbar-nav navbar-right'], 'items' => [ ['label' => 'Home', 'url' => ['/site/index']], ['label' => 'About', 'url' => ['/site/about']], ['label' => 'Contact', 'url' => ['/site/contact']],
['label' => 'Mailer', 'url' => ['/site/mailer']],
Source: https://habr.com/ru/post/280310/
All Articles