Springメール送信の実現


Spring実装メール送信(簡易版)
springでメールを送信するにはspringが必要なパッケージのほかに2つのパッケージが必要です.以下は公式サイトのドキュメントの原話です.
The following additional jars to be on the classpath of your application in order to be able to use the Spring Framework's email library.
The JavaMail mail.jar library
The JAF activation.jar library
同時にspringのサポートパッケージが必要で、このdemoで私が使っているspring 3.2リリース版
spring-context-support-3.2.0.RELEASE.jar
まずアプリケーションでxmlでメール送信サーバを構成するには、次の手順に従います.
 
<!-- mail start -->
	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="smtp.163.com" /> <!--        -->
		<property name="username" value="[email protected]"></property><!--          -->
 		<property name="password" value="????"></property><!--       -->
		<property name="defaultEncoding" value="utf-8"></property><!--       -->
		<property name="javaMailProperties">
			<props>
				 <prop key="mail.smtp.auth">true</prop> <!--               true -->
			</props>
		</property>
	</bean>

	<!-- this is a template message that we can pre-load with default state -->
	<bean id="templateMessage" class="org.springframework.mail.SimpleMailMessage">
		<property name="from" value="[email protected]" />
		<property name="subject" value="  " />
	</bean>
	<!-- mail end -->

メール送信のクラスとインタフェースの構成
public class EmailManagerImpl implements EmailManager {

	@Autowired
	@Qualifier("mailSender")
    private MailSender mailSender;
	
	@Autowired
	@Qualifier("templateMessage")
    private SimpleMailMessage templateMessage;

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void setTemplateMessage(SimpleMailMessage templateMessage) {
        this.templateMessage = templateMessage;
    }

    public void sendMail() {
        SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage);
        msg.setTo("[email protected]");
        msg.setText(
            "Dear" + ",           ! ");
        try{
            this.mailSender.send(msg);
        }
        catch(MailException ex) {
            // simply log it and go on...
            System.err.println(ex.getMessage());
        }
    }

あとは必要な場所でsendMail()メソッドを呼び出せばいいです.