特定の URL、つまり /newsletter/send にアクセスするために必要なリソースには、すべての人がアクセスできます。そのページのコンテンツはまったく面白くないので、実際の人がその URL にアクセスしても問題ありません =)
スクリプト自体は、送信するメールがあるかどうかを確認し、DB などからすべてのユーザーを取得するだけです。ニュースレターの方法論は、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());
}
これがあなたが求めているものであることを願っています=)