Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use the swiftMailer in Yii2

I can't finally understand how to use the swiftMailer extension in Yii2. Judging by that on this subject I didn't find questions, the task is trivial, but up to the end I couldn't understand.

There are examples which don't describe in more detail all cycle of sending the letter or I don't understand something :(

Setup

    return [     //....    'components' => [     ......     'mail' => [       'class' => 'yii\swiftmailer\Mailer',       'transport' => [         'class' => 'Swift_SmtpTransport',         'host' => 'localhost',         'username' => 'username',         'password' => 'password',         'port' => '587',         'encryption' => 'tls',       ],     ],   ] ]; 

Send

Yii::$app->mail->compose() ->setTo($toEmail) ->setFrom([$this->email => $this->name]) ->setSubject($this->subject) ->setTextBody($this->body) ->send(); 

I want will receive a concrete working example. Thank you.

P.S. I adjusted domain records MX, DKIM, SPF added.

UPD (some answer):

E-mail which is passed in "From" field, it is put down by default in the field of "Return-path", has to be the existing address. Some providers don't allow sending mail from nonexistent email addresses.

like image 459
frops Avatar asked Jul 28 '14 12:07

frops


People also ask

What is swift mailer?

Swift Mailer is a component based library for sending e-mails from PHP applications.


2 Answers

Make sure you have initialised your application in production environment to send emails from your application,else it will be written in to the mailoutput folder.Or manually edit the config file like follows.

In the components's section of your common/main-local.php

'mail' => [         'class' => 'yii\swiftmailer\Mailer',         'viewPath' => '@backend/mail',         'useFileTransport' => false,//set this property to false to send mails to real email addresses         //comment the following array to send mail using php's mail function         'transport' => [             'class' => 'Swift_SmtpTransport',             'host' => 'smtp.gmail.com',             'username' => '[email protected]',             'password' => 'password',             'port' => '587',             'encryption' => 'tls',             ],     ], 

In your Controller

    \Yii::$app->mail->compose('your_view', ['params' => $params])     ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail'])     ->setTo('[email protected]')     ->setSubject('This is a test mail ' )     ->send(); 

This should work! Hope this will help you!

like image 98
Dency G B Avatar answered Oct 05 '22 11:10

Dency G B


You need not using SMTP transport with swiftmailer, only remove 'useFileTransport' => true in the config file (app/config/web.php in basic template) and the mails will flow.

Take a look in the docs:

http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html

like image 34
uselma Avatar answered Oct 05 '22 11:10

uselma