diff --git a/apps/advanced/backend/config/main.php b/apps/advanced/backend/config/main.php index cb68bbe..07658dd 100644 --- a/apps/advanced/backend/config/main.php +++ b/apps/advanced/backend/config/main.php @@ -22,6 +22,7 @@ return [ ], 'db' => $params['components.db'], 'cache' => $params['components.cache'], + 'mail' => $params['components.mail'], 'user' => [ 'identityClass' => 'common\models\User', ], diff --git a/apps/advanced/common/config/params.php b/apps/advanced/common/config/params.php index 5212f84..4d83098 100644 --- a/apps/advanced/common/config/params.php +++ b/apps/advanced/common/config/params.php @@ -12,6 +12,10 @@ return [ 'class' => 'yii\caching\FileCache', ], + 'components.mail' => [ + 'class' => 'yii\swiftmailer\Mailer', + ], + 'components.db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2advanced', diff --git a/apps/advanced/composer.json b/apps/advanced/composer.json index 15faab4..17b5106 100644 --- a/apps/advanced/composer.json +++ b/apps/advanced/composer.json @@ -16,6 +16,7 @@ "require": { "php": ">=5.4.0", "yiisoft/yii2": "dev-master", + "yiisoft/yii2-swiftmailer": "dev-master", "yiisoft/yii2-bootstrap": "dev-master", "yiisoft/yii2-debug": "dev-master", "yiisoft/yii2-gii": "dev-master" diff --git a/apps/advanced/console/config/main.php b/apps/advanced/console/config/main.php index 8c7459a..0142e32 100644 --- a/apps/advanced/console/config/main.php +++ b/apps/advanced/console/config/main.php @@ -19,6 +19,7 @@ return [ 'components' => [ 'db' => $params['components.db'], 'cache' => $params['components.cache'], + 'mail' => $params['components.mail'], 'log' => [ 'targets' => [ [ diff --git a/apps/advanced/frontend/config/main.php b/apps/advanced/frontend/config/main.php index f420832..49c4e55 100644 --- a/apps/advanced/frontend/config/main.php +++ b/apps/advanced/frontend/config/main.php @@ -23,6 +23,7 @@ return [ ], 'db' => $params['components.db'], 'cache' => $params['components.cache'], + 'mail' => $params['components.mail'], 'user' => [ 'identityClass' => 'common\models\User', ], diff --git a/apps/advanced/frontend/controllers/SiteController.php b/apps/advanced/frontend/controllers/SiteController.php index ae41744..02b9bca 100644 --- a/apps/advanced/frontend/controllers/SiteController.php +++ b/apps/advanced/frontend/controllers/SiteController.php @@ -159,6 +159,7 @@ class SiteController extends Controller $user->password_reset_token = Security::generateRandomKey(); if ($user->save(false)) { + // todo: refactor it with mail component. pay attention to the arrangement of mail view files $fromEmail = \Yii::$app->params['supportEmail']; $name = '=?UTF-8?B?' . base64_encode(\Yii::$app->name . ' robot') . '?='; $subject = '=?UTF-8?B?' . base64_encode('Password reset for ' . \Yii::$app->name) . '?='; diff --git a/apps/advanced/frontend/models/ContactForm.php b/apps/advanced/frontend/models/ContactForm.php index ddb622b..a3c56b8 100644 --- a/apps/advanced/frontend/models/ContactForm.php +++ b/apps/advanced/frontend/models/ContactForm.php @@ -2,6 +2,7 @@ namespace frontend\models; +use Yii; use yii\base\Model; /** @@ -48,13 +49,12 @@ class ContactForm extends Model public function contact($email) { if ($this->validate()) { - $name = '=?UTF-8?B?' . base64_encode($this->name) . '?='; - $subject = '=?UTF-8?B?' . base64_encode($this->subject) . '?='; - $headers = "From: $name <{$this->email}>\r\n" . - "Reply-To: {$this->email}\r\n" . - "MIME-Version: 1.0\r\n" . - "Content-type: text/plain; charset=UTF-8"; - mail($email, $subject, $this->body, $headers); + Yii::$app->mail->compose() + ->setTo($email) + ->setFrom([$this->email => $this->name]) + ->setSubject($this->subject) + ->setTextBody($this->body) + ->send(); return true; } else { return false; diff --git a/apps/basic/composer.json b/apps/basic/composer.json index 3144aa8..cef46b7 100644 --- a/apps/basic/composer.json +++ b/apps/basic/composer.json @@ -16,6 +16,7 @@ "require": { "php": ">=5.4.0", "yiisoft/yii2": "dev-master", + "yiisoft/yii2-swiftmailer": "dev-master", "yiisoft/yii2-bootstrap": "dev-master", "yiisoft/yii2-debug": "dev-master", "yiisoft/yii2-gii": "dev-master" diff --git a/apps/basic/config/web.php b/apps/basic/config/web.php index 5b9907c..1f6c51f 100644 --- a/apps/basic/config/web.php +++ b/apps/basic/config/web.php @@ -17,6 +17,9 @@ $config = [ 'errorHandler' => [ 'errorAction' => 'site/error', ], + 'mail' => [ + 'class' => 'yii\swiftmailer\Mailer', + ], 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ diff --git a/apps/basic/models/ContactForm.php b/apps/basic/models/ContactForm.php index f42cd53..58f8d26 100644 --- a/apps/basic/models/ContactForm.php +++ b/apps/basic/models/ContactForm.php @@ -2,6 +2,7 @@ namespace app\models; +use Yii; use yii\base\Model; /** @@ -48,13 +49,12 @@ class ContactForm extends Model public function contact($email) { if ($this->validate()) { - $name = '=?UTF-8?B?' . base64_encode($this->name) . '?='; - $subject = '=?UTF-8?B?' . base64_encode($this->subject) . '?='; - $headers = "From: $name <{$this->email}>\r\n" . - "Reply-To: {$this->email}\r\n" . - "MIME-Version: 1.0\r\n" . - "Content-type: text/plain; charset=UTF-8"; - mail($email, $subject, $this->body, $headers); + Yii::$app->mail->compose() + ->setTo($email) + ->setFrom([$this->email => $this->name]) + ->setSubject($this->subject) + ->setTextBody($this->body) + ->send(); return true; } else { return false;