Dobrym rozwiązaniem może być użycie rozszerzenia mail, dzięki któremu możemy sobie skonfigurować brankę SMTP (np: z Gmail’a), wystarczy, że zrobisz co następuje:
- rozpakuj rozszerzenie w katalogu extensions
- dodaj w konfiguracji (/protected/config/main.php) np:
'import'=>array(
'ext.yii-mail.YiiMailMessage',
),
'components'=>array(
'mail' => array(
'class' => 'ext.yii-mail.YiiMail',
'transportType' => 'smtp',
'transportOptions' => array(
'host' => 'smtp.gmail.com',
'username' => 'XXXX@gmail.com',
'password' => 'XXXX',
'port' => '587',
'encryption'=>'tls',
),
'viewPath' => 'application.views.mail',
'logging' => true,
'dryRun' => false
),
),
i możesz wysłać e-mail – wersja uproszona:
$message = new YiiMailMessage;
$message->setBody('Some content', 'text/plain', 'UTF-8');
$message->subject = 'Some title';
$message->addTo(Yii::app()->params['adminEmail']);
$message->from = Yii::app()->params['adminEmail'];
Yii::app()->mail->send($message);
lub bardziej rozbudowana w HTML z przekazaniem zmiennych do szablonu (domyślnie w application.views.mail):
$message = new YiiMailMessage();
$message->view = 'myTemplate';
$message->setSubject('Some subject');
$message->setBody(array(
'varialbeA' => $varA,
'variableB' => $varB
), 'text/html', 'UTF-8');
$message->setTo('user@example.com');
$message->setFrom(Yii::app()->params['adminEmail'], 'Administrator');