這次來看看Spring提高的一些有用過的J2EE中使用到的功能,如 發送Email, 執行定時任務...


先來看看發送Email吧, 在Spring中發送Email是很簡單的,使用Spring提高的MailSender和MailMessage就可以了,配置代碼如下:?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "

<beans>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
??? <property name="host">
??????? <value>smtp.163.com</value>
??? </property>
<property name="javaMailProperties">
<props>
<!-- 如果要使用用戶名和密碼驗證,這一步需要 -->

?????? <prop key="mail.smtp.auth">true</prop>
? </props>
?</property>
<property name="username">
??? <value>yong hu ming </value>
</property>
<property name="password">
???? <value>mi ma</value>
</property>
</bean>
<!-- 簡單的message -->

<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="to">
<value>shou jian ren</value>
</property>
<property name="from">
<value>ni de you xiang di zhi</value>
</property>
<property name="subject"> <!-- Email 標題 -->
<value>A Spring Mail sender test to my baoyaer</value>
</property>
</bean>
<!-- 測試發送的類 -->

<bean id="testMailSender" class="test.SpringMail.TestSenderMail">
<property name="mailMessage">
<ref bean="mailMessage"/>
</property>
<property name="mailSender">
<ref bean="mailSender"/>
</property>
</bean>


</beans>

?
上面的配置好以后就可以直接發送了, 看看TestSenderMail.java的代碼:


package?test.mail;

import?org.springframework.mail.MailException;
import?org.springframework.mail.MailSender;
import?org.springframework.mail.SimpleMailMessage;

public?class?TestSenderMail?{
??
private?MailSender?mailSender;
??
private?SimpleMailMessage?mailMessage;
??
??
public?TestSenderMail()?{
????
??}

??
??
public?SimpleMailMessage?getMailMessage()?{
????
return?mailMessage;
??}

??
public?void?setMailMessage(SimpleMailMessage?mailMessage)?{
????
this.mailMessage?=?mailMessage;
??}

??
public?MailSender?getMailSender()?{
????
return?mailSender;
??}

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

??
??
public?void?sendMail()?{
????SimpleMailMessage?message?
=?new?SimpleMailMessage(mailMessage);
????
//設置email內容,?
????message.setText("測試Spring?發送Email.");
????
????
try?{
??????mailSender.send(message);
????}
?catch?(MailException?e)?{
??????
//?TODO?Auto-generated?catch?block
??????System.out.println("O?.?發送Email失敗了.");
??????e.printStackTrace();
????}

??}

}



很簡單吧. 下面是測試類: TestApp.java


?1package?test.mail;
?2
?3import?org.springframework.context.ApplicationContext;
?4import?org.springframework.context.support.ClassPathXmlApplicationContext;
?5
?6public?class?TestApp?{
?7
?8??/**
?9???*?@param?args
10???*/

11??public?static?void?main(String[]?args)?{
12????//?TODO?Auto-generated?method?stub
13????ApplicationContext?context?=?new?ClassPathXmlApplicationContext(
14????????"test/mail/mail.xml");
15
16????TestSenderMail?sender?=?(TestSenderMail)?context
17????????.getBean("testMailSender");
18????sender.sendMail();
19??}

20??//拋出如下異常,是瑞星監控的問題,關閉就可以了
21??/**
22???*?DEBUG?SMTP:?QUIT?failed?with?250?O?.?發送Email失敗了.
23???*?org.springframework.mail.MailSendException:?Could?not?send?mails:?354
24???*?
25???*?com.sun.mail.smtp.SMTPSendFailedException:?354
26???*?
27???*?at
28???*?com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
29???*?at?com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1215)?at
30???*?com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:586)
31???*/

32}



呵呵, 現在就可以發送Email了.