Tips untuk mengirim email di Yii2, SMTP Service yang saya gunakan adalah SMTP2Go.
Langkah 1 : Tambahkan Mailer
Tambahkan mailer di components main.php yang ada di folder config baik di common, backend, maupun frontend.
1 |
'mailer' => require(Yii::getAlias('@common').'/config/email.php'), |
Kemudian buat file email.php di folder common/config :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php return [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'mail.smtp2go.com', 'password' => 'yoursmtppassword', 'port' => 2525, ], 'viewPath' => '@common/mail', 'messageConfig' => [ 'bcc' => [ ] ] ]; ?> |
Langkah 2 : Buat Notification Helper
Notification Helper ini berguna untuk membuat kontrol email apa aja yang akan dikirimkan. Misalnya apabila aplikasi ditolak maka akan mengirimkan email penolakan, bila aplikasi diterima makan akan mengirimkan email persetujuan.
common\helpers\Notification.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php namespace common\helpers; use common\helpers\flaghelper\StatusFlag; use Yii; use yii\helpers\ArrayHelper; class Notification { public static function sendEmail($model='null', $stat) { $isi = ' '; $sub = ' '; $email = ' '; switch ($stat) { case StatusFlag::TERIMA: $isi = 'terima'; $sub = 'Surat Persetujuan'; break; case StatusFlag::TOLAK: $isi = 'tolak'; $sub = 'Surat Penolakan'; break; default: $isi = ' '; $sub = ' '; $email = ' '; break; } Yii::$app->mailer->compose(['html' => $isi], ['model'=>$model]) ->setTo($email) ->setSubject($sub) ->send(); } } |
Langkah 3 : Buat Template Email
Buat template email dan simpan di folder common\email, yang namanya sesuai dengan ‘$isi’ pada langkah 2. Misalnya terima.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php use yii\helpers\ArrayHelper; use yii\helpers\Html; ?> <style type="text/css"> .INVOICE { color: #000080; } .style1 { color: #FF0000; font-weight: bold; } </style> </head> <body> <table width="646" border="0"> <tr> <td width="640"> <?php echo Html::img('http://gambar.com/logo.jpg',['width'=>'640']); ?> </td> </tr> <tr> <td height="29"><h2 align="center" class="INVOICE"><strong><u>DITERIMA</u></strong></h2> <p align="left">Dengan ini kami informasikan bahwa telah permohonan Anda <strong>DISETUJUI</strong> </p> </td> </tr> <tr> <td> <strong><p style="margin-left: 100px">Nama Perusahaan : </p></strong> <strong><p style="margin-left: 100px">Tipe Kendaraan : </p></strong><br /> </td> </tr> </table> <table width="645" border="0"> <tr> <td width="636">Demikian informasi kami sampaikan. Terima Kasih. </td> </tr> <br /> <tr> <td> <?php echo Html::img('http://gambar.com/logo_footer.png',['width'=>'640']); ?></td> </tr> </table> <p> </p> <p> </p> </body> </html> |
Langkah 4 : Buat StatusFlag.php
Untuk menentukan email jenis apa yang dikirim, kita perlu membuat status nya.
common\helpers\flaghelper\StatusFlag.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php namespace common\helpers\flaghelper; use Yii; class StatusFlag { const TERIMA = 1; const TOLAK = 2; public static function getStatusFlagList() { return [ self::TERIMA => Yii::t('app','Permohonan Diterima'), self::TOLAK => Yii::t('app','Permohonan Ditolak'), ]; } } |
Langkah 5 : Test Pengiriman Email
Jalankan file script ini di Controller :
1 2 3 |
public function actionTestEmail(){ $kirim = \common\helpers\Notification::sendEmail('test',\common\helpers\flaghelper\StatusFlag::TOLAK); } |
Parse error: syntax error, unexpected ‘=>’ (T_DOUBLE_ARROW) in C:\xampp\htdocs\yii\advance\email\common\config\main.php on line 15
kok masih error ya?
PHP nya versi berapa mas?
Parse error: syntax error, unexpected ‘=>’ (T_DOUBLE_ARROW) in C:\xampp\htdocs\yii\advance\email\common\config\main.php on line 15
common/config/main.php
1.?php
2.return [
3. ‘aliases’ => [
4 . ‘@bower’ => ‘@vendor/bower-asset’,
5 . ‘@npm’ => ‘@vendor/npm-asset’,
6 . ],
7 . ‘mailer’=> require(Yii::getAlias(‘@common’).’/config/email.php’),
8. ‘vendorPath’ => dirname(dirname(DIR)) . ‘/vendor’,
9 . ‘components’ => [
10. ‘cache’ => [
11. ‘class’ => ‘yii\caching\FileCache’,
12. ],
13. ],
14.];
15.’mailer’=> require(Yii::getAlias(‘@common’).’/config/email.php’);
?>