メール送信の構成(Spring1.2.1)
Springのメール送信のための構成を確認し,実際にメール送信してみる.
Springでは,メール送信サポートがされている.
だいたい,以下のような概要となる.
${...}は,PropertyPlaceholderConfigurerにより設定ファイル./conf/mail.confから読み込んで設定される.
id値mailSenderのbeanがメール送信処理をするクラスで,設定としてSMTPサーバを持つ.
id値mailMessageのbeanがメールメッセージのプロトタイプである.
そして今回はメール送信処理を行うビジネスロジックとして,it値mailBLのbeanを作成した.
メール送信処理に関して,実際の作り込みが必要なのは,このmailBLに該当するクラスである.
- MailSenderクラスとMailMessageクラス,その他メール送信時の例外を中心に構成.
- MailSenderはメール送信処理を司るインタフェースで,実装としてJavaMailとcosを標準サポート.
- MailMessageはメールメッセージ(ヘッダなども含む)を司るクラスで,プロトタイプパターンで,プロトタイプをbeans.xmlで生成する.
メール送信処理を記述する,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'
あとは,宛先でメールが受信できていることを確認する.

