うーん?Zend では、ブートストラップで、または application.ini ファイルやその他の構成ファイルを使用して、Zend_Mail を構成できます。それが私の今の設定方法です。開発ではメールをファイルに書き込み、テストでは実際のメール サーバーでメールを送信します。
Zend_Mail インスタンスを、Mail_Service と呼ぶクラスでインスタンス化します。このメール サービス クラスは、メールを送信する必要がある場合に Zend_Mail インスタンスを内部的に作成し、既存の Zend_Mail インスタンスが作成されていて、さらにメールを送信する必要がある場合は、それを使用します。
定義済みのメールを送信するメソッドがあります。例えば、
Mail_Service->sendWelcomeEmail( $userInfo )
また
Mail_Service->sendActivationEmail( $userInfo )
たとえば、コントローラーが新しいユーザーを作成するリクエストを受け取った場合、コードの全体的なフローは次のようになります
//in the controller
//process form from browser somehow
UserAccountService->createNewUser( $userInfo );
/////////////////
/// Within the user account service
public function createNewUser( $userInfo )
{
$userMapper->createNewUser( $userInfo );
$preferencesMapper->createDefaultPreferencesForUser( $userInfo );
MailService->sendWelcomeEmail( $userInfo );
}
これが最善の方法かどうかはわかりませんが、この方法では、他のオブジェクトへの呼び出しを転送するだけのアトミック操作ではなく、サービスに関連する関数名がサービスにあり、ワークフロー全体をキャプチャします。
お役に立てれば。