rmrevin / yii2-postman
Mail module for Yii2.
Installs: 11 731
Dependents: 1
Suggesters: 0
Security: 0
Stars: 26
Watchers: 8
Forks: 13
Open Issues: 3
Type:yii2-extension
Requires
- phpmailer/phpmailer: ~v5.2
- yiisoft/yii2: ~2.0
Requires (Dev)
- phpunit/phpunit: ^5.2
README
Installation
In composer.json
:
{
"require": {
"rmrevin/yii2-postman": "~2.2"
}
}
configuration
/config/web.php
<? return [ // ... 'components' => [ // ... 'postman' => [ 'class' => 'rmrevin\yii\postman\Component', 'driver' => 'smtp', 'default_from' => ['mailer@somehost.com', 'Mailer'], 'subject_prefix' => 'Sitename / ', 'subject_suffix' => null, 'table' => '{{%postman_letter}}', 'view_path' => '/email', 'smtp_config' => [ 'host' => 'smtp.domain.cpom', 'port' => 465, 'auth' => true, 'user' => 'email@domain.cpom', 'password' => 'password', 'secure' => 'ssl', 'debug' => false, ] ], ], // ... ];
If you want use SMTP without ssl and tsl
<? return [ // ... 'components' => [ // ... 'postman' => [ 'class' => 'rmrevin\yii\postman\Component', // ... 'smtp_config' => [ // ... 'secure' => '', 'smtpAutoTls' => false, ] ], ], // ... ];
Updating database schema
After you downloaded and configured yii2-postman, the last thing you need to do is updating your database schema by applying the migrations:
In /config/console.php
:
<? return [ // ... 'components' => [ // ... 'postman' => [ 'class' => 'rmrevin\yii\postman\Component', ], ], // ... ];
In Command line
:
php yii migrate/up --migrationPath=@vendor/rmrevin/yii2-postman/migrations/
Usage
<? // ... (new \rmrevin\yii\postman\RawLetter()) ->setSubject('Subject') ->setBody('Message body') ->addAddress('user@somehost.com') ->addBccAddress(['tech@somehost.com']); if(!$Letter->send()){ echo $Letter->getLastError(); } // path to view algorithm: // Yii::$app->controller->module->getViewPath() . Postman::$view_path . '/' . 'message-view.php' // path to view: /protected/views/email/message-view.php (new \rmrevin\yii\postman\ViewLetter) ->setSubject('Subject') ->setBodyFromView('letter-view', [ 'name' => 'Rosy', 'date' => date('Y-m-d') ]) ->addAddress(['user@somehost.com', 'John Smith']) ->addAttachment('/path/to/file.tar.gz'); if(!$Letter->send()){ echo $Letter->getLastError(); }
Cron
In cron script:
LetterModel::cron($num_letters_per_step = 10)