2012-06-18 50 views
0

我有一個Zend框架項目使用版本1.10.8與Doctrine 1.2.4.I使用Zend_Auth和Zend_Acl其中操作是資源。我最近添加了通訊功能,並想知道我將如何一起玩。這是我第一次做一個真正的時事通訊和Zend的另外。從Zend Framework項目發送新聞通訊

所以我的第一種方法是有一個PHP腳本連接到數據庫獲取模板,獲取用戶的名稱和電子郵件。解析模板以供用戶定製併發送。我將使用swiftMailer。所以我會設置一個cron作業來爲每個時期調用該文件。

現在我擔心ACL。如果腳本在Zend外部(即我的項目)並點擊一個Zend動作(url)來執行所有的東西,系統將如何進行身份驗證(我的意思是系統運行cron PHP文件)?

使用ZF的另一種方法是什麼?謝謝

回答

2

所有人都可以訪問所需的資源來訪問給定的網址即通訊/發送。不要緊,如果真正的人打的網址,因爲該網頁的內容將是相當無趣=)

該腳本本身只會檢查是否有郵件發送,然後從數據庫中抓住所有用戶等通訊方法對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()); 
    } 

希望這是什麼youre要求=)

+0

非常感謝mate.exactly我是什麼擔心 –