2012-06-18 2 views
0

У меня есть проект Zend Framework с использованием версии 1.10.8 с Doctrine 1.2.4. Я использую Zend_Auth и Zend_Acl, где действия - это ресурсы. Я недавно добавил функционал информационного бюллетеня и размышлял над тем, как я буду играть вместе. Это мое первое время, когда мы делали настоящий материал для новостей и с Zend.Отправка информационного бюллетеня из проекта Zend Framework

Таким образом, мой первый подход будет иметь скрипт php для подключения к db, получить шаблон, получить имя и адрес электронной почты подписчика. проанализируйте шаблон для настройки для пользователей и отправьте его. Я буду использовать swiftMailer. поэтому я бы установил задание cron для вызова этого файла для каждого периода.

Теперь мои заботы связаны с ACL. Если скрипт находится за пределами Zend (т. Е. Мой проект) и нажимает на действие Zend (url), чтобы выполнить все материалы, как система будет аутентифицироваться (я имею в виду систему cron running файл php)?

Каков другой подход для использования ZF. спасибо

ответ

2

Необходимый ресурс для доступа к указанному URL-адресу, т.е. информационному бюллетеню/отправке, будет доступен для всех людей. Не имеет значения, попали ли реальные люди в URL-адрес, так как содержание этой страницы было бы совсем неинтересным.)

Сам скрипт просто проверил, есть ли почта для отправки, а затем захватить всех пользователей из БД и т. Д. Информационный бюллетень - методология довольно несерьезна в Zend.

Вы также можете легко делать шаблоны с Zend и Zend_Mail. Это, как я обрабатывать электронные письма в Zend:

$mail = new Zend_Mail('UTF-8'); 

$mailView = new Zend_View(); 
$mailView->setScriptPath(APPLICATION_PATH.'/views/email/'); 
$mailView->assign('title', $this->_report->getTitle()); 
$mailView->assign('text', $this->_report->getText()); 

$mail->addTo($user->getEmail(), $user->getFullnameBySurname()); 
$mail->setBodyHtml($mailView->render('emailregular.phtml')); // /application/views/email/emailregular.phtml 
$mail->setBodyText(strip_tags($mailView->render('emailregular.phtml'))); //might not be the cleanest way... 

try { 
    $mail->send(); 
    $mail->clearRecipients(); // This clears the addTo() for Zend_Mail as in my script i only have one instance of zend_mail open while looping through several users 
    $this->_log->info('Mail out for user ....'); 
    } catch (Zend_Mail_Transport_Exception $e) { 
    $this->_log->error('Zend_Mail_Transport_Exception for User('.$user->getid().') - Mails were not accepted for sending: '.$e->getMessage()); 
    } catch (Zend_Mail_Protocol_Exception $e) { 
    $this->_log->error('Zend_Mail_Protocol_Exception for User('.$user->getid().') - SMTP Sentmail Error: '.$e->getMessage()); 
    } catch (Exception $e) { 
    $this->_log->error('Unknown Exception for User('.$user->getid().') - SMTP Sentmail Error: '.$e->getMessage()); 
    } 

Надежда это, что ты просишь =)

+0

Благодаря очень mate.exactly, что я беспокоиться о –