DbHelp.ru
Маленький Yii блог
Комментарии
Гость: комент
Гость: wahaha
zolter: Друпал на Yii? ))
nastia: http://drupal.org/
JB: Да там просто ад)) мне всего 3 значения нужно чтобы выпадало, все равно спасибо)...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Подключаем SwiftMailer к Yii

Рубрика: Мелкие заметки на тему Yii

Оцените эту статью:

Рейтинг: 0.00 (0)
18 Окт. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rulogo Разговор сегодня пойдет про SwiftMailer. Это удобный инструмент для отправки почты из php скрипта. Вы сможете:

 

  1. очень легко и просто прикреплять вложения к письму
  2. посылать сообщения используя SMTP, sendmail, postfix. Поддерживается шифрование паролей
  3. встроенная защита от иньекций в заголовках и тексте письма

вы больше некогда не вспомните про то, что такое функция mail() в php...

---

Сам SwiftMailer может быть установлен в виде пакета на сервер или просто закачен в виде набора php классов. Для простой установки на хост, советовал бы на досуге почитать инструкцию. Список плюсов который я привел - естественно не полный, для более детального изучения инструмента - посмотрите их сайт [англ.]

 

Говорить мы будем про подключение данного инструмента к Yii.

  1. Первым делом скачайте SwiftMailer 4.1
  2. Создайте каталог protected/vendor/swift
  3. Достаньте с архива папку lib, и перенесите её содержимое в protected/vendor/swift

Если бы мы не использовали Yii, то четвертым пунктом был бы запуск следующего кода для проверки:

function sendHtmlMail($from, $to, $subject, $body, $attachments = array()) {
    require_once 'lib/swift_required.php';
 
    $message = Swift_Message::newInstance()
      ->setSubject($subject)
      ->setFrom($from)
      ->setTo($to)
      ->setBody($body, 'text/html');
 
    $transport = Swift_SmtpTransport::newInstance('host', 25)
      ->setUsername('username')
      ->setPassword('password');
 
    $mailer = Swift_Mailer::newInstance($transport);
    return $mailer->send($message);
}
 
var_dump(sendHtmlMail("fromMailAddress", "toMailAddress", "subject", "body"));

Для работы с Yii, нам достаточно изменить строчку:

require_once 'lib/swift_required.php';

на:

spl_autoload_unregister(array('YiiBase','autoload'));
Yii::import('application.vendor.swift.swift_required', true);
spl_autoload_register(array('YiiBase','autoload'));

На этом в принципе теоретическая часть заканчивается. Посмотрите код который я привел выше — и попробуйте на нем составить свои примеры.

 

 



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Заказали мне в общем сделать на сайте элемент, который информировал бы о кол-ве людей на сайте. Некий счетчик живого онлайна. ... "Хитрый счетчик "онлайна на сайте""

  2. На самом деле Yii является отличным инструментом для создания приложения на PHP. Первое с чем сталкивается разработчик на Yii ... "Kohana хелперы в Yii"

  3. Сегодня разговор снова пойдет про деревья :) Наткнулась мне заметка  «Display an AJAX tree from your DB using CtreeView» которую ... "Открытие узлов дерева через AJAX"

[guest] Гость

Было сказано: Вторник, 21 Декабрь 2010

А куда вставлять в коде Yii эту функцию sendHtmlMail? В каждый контроллер?

[guest] zolter

Было сказано: Вторник, 21 Декабрь 2010

Есть несколько вариантов:
1. сделать как компонент
2. контроллеры наследовать от какого то своего ABS, который сам уже будет наследоваться от ABS. И вот в этом главном контроллере и пихайте эту функцию

[guest] Гость

Было сказано: Среда, 22 Декабрь 2010

А как оформить в компонент?

[guest] Гость

Было сказано: Четверг, 23 Декабрь 2010

в стандартном yii блоге(там где обратная связь) засунул функцию в
SiteController, в actionContact, который срабатывает после клика по сабмиту в форме обратной связи.


$from = $_POST['ContactForm']['email'];
$to = "****@gmail.com";
$subject = $_POST['ContactForm']['subject'];
$body = $_POST['ContactForm']['body'];
$attachments = array();
$this->sendHtmlMail($from, $to, $subject, $body, $attachments = array());

ниже в SiteController добавил

function sendHtmlMail($from, $to, $subject, $body, $attachments = array()) {
//die('sss');
spl_autoload_unregister(array('YiiBase','autoload'));
Yii::import('application.vendor.swift.swift_required', true);
spl_autoload_register(array('YiiBase','autoload'));

$message = Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body, 'text/html');

$transport = Swift_SmtpTransport::newInstance('host', 25)
->setUsername('username')
->setPassword('password');

$mailer = Swift_Mailer::newInstance($transport);

return $mailer->send($message);
}


Fatal error: Class 'CException' not found in C:\vhosts\mb\html\framework\YiiBase.php on line 310

не понимаю что такое...

[guest] sape

Было сказано: Среда, 31 Август 2011

Парень, что то мне подсказывает, что ты не содержимое папки, а папку перенес )))

[guest] sape

Было сказано: Среда, 31 Август 2011

хотя если перенести папку, то ерроры + скрипт интересуетсо папкой lib
А если скопировать целиком папку lib и подключить так

Yii::import('application.extensions.swift.lib.swift_required', true);

например, то все замечательно работает

Оставить комментарий


Код:
Имя: