2010-12-08 11 views
1

JSPを使用してSpring 3.0のJavaMailSenderメカニズムを通じて送信する電子メールを設計することは可能ですか? JavaMailSenderはおそらくこの質問には関係ありませんが、JSPの<fmt:message key="phrasetitle"/>国際化メカニズム、その可変/ループJSTLコードを利用し、設計者が完成したHTML電子メールを簡単に手渡すことができるようにすることです。JSPとSpring 3.0で電子メールを送信

さらに、このJSPをインポートするWebページを作成して、クライアントがHTMLを正しく表示しない場合にWeb上でその電子メールを表示できるように各電子メールに簡単にリンクを提供することができます。

UPDATE:以下の2の回答ではなく、JSPの電子メールの速度を使用することをお勧めするので、それは賢い選択だように思えます。しかし、stackoverflowをすばやくスキャンすると、FreeMarkerが自分のニーズに適している可能性があります。特に、私は電子メールで送信されたものを反映するJSPページを持つことができるようにしたい。 JSPのコードをVelocityやFreeMarkerに変換する必要がありますが、FreeMarkerの利点は、JSPコード、特にtaglibを再利用できることです。これは理にかなっていますか?

答えて

3

JSPはテンプレート技術ではありません。例えば、Velocityの方が良い選択です。

JSPを使用することを本当に主張しているのであれば、それをローカルでjava.net.URLで実行しなければなりません。

InputStream input = new URL("http://localhost:8080/context/mailtemplate.jsp").openStream(); 
+0

は、URLを呼び出すには非常に効率が悪いようですが、httpではなくコード内でこれを行う方法はありませんか? –

+1

はい、テンプレート技術を使用してください。 JSPはそうではありません。これはWeb/HTTP指向のビュー技術です。 – BalusC

+0

私の質問が更新されました。完全なインポートを実行できない場合でも、多くのJSPコードを再利用できるように、FreeMarkerを使用することは理にかなっていますか? –

0

Velocityの使用については、お好きなようになります。Spring documentationがあります。私はSpringで電子メールを処理するためにそれを使用し、素晴らしい動作をします。

私が通常行っていることは、電子メールの送信を担当する仕事がコントローラから呼び出されるEmailServiceを持つことです。その中のメソッドは、Velocityテンプレートでアクセスされ、String(電子メール本文)としてレンダリングされるコマンドオブジェクトを受け入れます。その後、MailSenderなどを使用してメールを送信できます。

+0

私の質問が更新されました.FreeMarkerを使用するのが理にかなっていますので、完全なインポートを実行できない場合でもJSPコードを再利用できますか? –

0

私はあなたが本当にJSPをレンダリングし、(あなたがJavaMailerに渡すことができます)文字列として出力をキャプチャし、Capturing JSP Output

に私のチュートリアルをチェックアウトする必要がある場合は、ベロシティやFreemarkerのは、より良い選択であることに同意しますが、

これは、Spring 3を使用し、fmt:message、fmt:formatNumber、およびspring:メッセージも使用できます。基本的な考え方は、RequestDispatcher.includeメソッドを使用してページをMockHttpServletRequestにレンダリングすることです。

+0

非常にいいですが、私はVelocityと一緒に行ってしまいました。 –