ファイヤープロジェクト
メール送信の構成(Spring1.2.1)
2005-08-10T03:00+09:00   matsu
Springのメール送信のための構成を確認し,実際にメール送信してみる.
Springでは,メール送信サポートがされている. だいたい,以下のような概要となる.
  • MailSenderクラスとMailMessageクラス,その他メール送信時の例外を中心に構成.
  • MailSenderはメール送信処理を司るインタフェースで,実装としてJavaMailとcosを標準サポート.
  • MailMessageはメールメッセージ(ヘッダなども含む)を司るクラスで,プロトタイプパターンで,プロトタイプをbeans.xmlで生成する.
実際に本頁のサンプルのbeans.xmlを見るとイメージをつかみやすいだろうか.
${...}は,PropertyPlaceholderConfigurerにより設定ファイル./conf/mail.confから読み込んで設定される. id値mailSenderのbeanがメール送信処理をするクラスで,設定としてSMTPサーバを持つ. id値mailMessageのbeanがメールメッセージのプロトタイプである. そして今回はメール送信処理を行うビジネスロジックとして,it値mailBLのbeanを作成した. メール送信処理に関して,実際の作り込みが必要なのは,このmailBLに該当するクラスである.
メール送信処理を記述する,MailBLImplを以下に示す.
このbeanは,beans.xmlの設定により,メール送信処理を行うmailSenderとメールメッセージのプロトタイプであるmessageが設定ずみである. そして,上位からprocessメソッドを呼ばれると,メール送信処理が始まる. まず,プロトタイプのmessageから,今回送信するメールメッセージを作成する.
SimpleMailMessage msg = new SimpleMailMessage(message);
引数のmessgeは,beans.xmlの設定により,to,from,cc,bcc,subjectが設定済みなので,あとは本文を設定するのみである.
msg.setText("This is Spring Sample Mail.");
あとはメールを送信する.
try{
  mailSender.send(msg);
} catch(MailException me) {
  logger.error("failed to send mail", me);
}
sendメソッドは,MailExceptionを投げるかもしれない. メールを送信する処理は以上である. 実際のアプリケーションでは,あとの各フィールドや本文の生成,その他ビジネスロジック処理を埋め込んで行く.
本頁のサンプルドライバを以下に示す.
サンプルを実行する前に,
conf/mail.conf
に,メールの設定を記述する. サンプルを実行すると実際にメールを送信するので,送信先などに注意する.
$> java -jar springsample.jar 
...省略...
support.DefaultListableBeanFactory:262
  - Pre-instantiating singletons in factory
   [org.springframework.beans.factory.xml.XmlBeanFactory defining beans
    [mailSender,mailMessage,mailBL,mailConf,sampleBeanFactoryPostProcessor]; root of BeanFactory hierarchy]
support.AbstractBeanFactory:219 - Creating shared instance of singleton bean 'mailSender'
support.AbstractBeanFactory:219 - Creating shared instance of singleton bean 'mailMessage'
support.AbstractBeanFactory:219 - Creating shared instance of singleton bean 'mailBL'
あとは,宛先でメールが受信できていることを確認する.
matsu(C)
Since 2002
Mail to matsu