I am trying to send email via swift mailer.I know there is a lot if similar questions but can't understand where is my problem. I did it just like i saw it in tutorial video in youtube (don't know shall i post the link here) but like always it is ok on the video but not on my project :D I tried with port 465 and encryption ssl also but without result. Will please you for some advice! Thank you in advance!
actionContact:
public function actionContact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh();
}
return $this->render('contact', [
'model' => $model,
]);
}
mailer config:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@app/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'tomaivanovtomov@gmail.com',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
and params:
return [
'adminEmail' => 'tomaivanovtomov@gmail.com',
];
I am pretty far from familiar with those emails things and i am still learning so please do not get mad at me for the pathetic question :)
EDIT: ContactForm model:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
/**
* ContactForm is the model behind the contact form.
*/
class ContactForm extends Model
{
public $name;
public $email;
public $title;
public $body;
public $verifyCode;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
// name, email, subject and body are required
[['name', 'email', 'title', 'body'], 'required'],
// email has to be a valid email address
['email', 'email'],
// verifyCode needs to be entered correctly
['verifyCode', 'captcha'],
];
}
/**
* @return array customized attribute labels
*/
public function attributeLabels()
{
return [
'name' => 'Name:',
'email' => 'Email:',
'title' => 'Title:',
'body' => 'Connect with us :)',
'verifyCode' => 'Verification Code'
];
}
/**
* Sends an email to the specified email address using the information collected by this model.
* @param string $email the target email address
* @return bool whether the model passes validation
*/
public function contact($email)
{
if ($this->validate()) {
Yii::$app->mailer->compose()
->setTo($email)
->setFrom([$this->email => $this->name])
->setSubject($this->subject)
->setTextBody($this->body)
->send();
return true;
}
return false;
}
}