Spring提供了一個發(fā)送電子郵件的高級抽象層,它向用戶屏蔽了底層郵件系統(tǒng)的一些細節(jié),同時負責低層次的代表客戶端的資源處理。Spring郵件抽象層的主要包為org.springframework.mail。它包括了發(fā)送電子郵件的主要接口MailSender和 封裝了簡單郵件的屬性如from, to,cc, subject, text的值對象叫做SimpleMailMessage。
1、我們定義一個發(fā)送郵件的接口:OrderManager.java
1?public?interface?OrderManager?extends?BaseManager{
2?/**
3?*email,要發(fā)送的郵件地址;
4?*Code:激活碼
5?*/
6??????public?void?placeOrder(String?email);
7?}
2、我們需要對該接口進行實現(xiàn)的方法:OrderManagerImpl.java
?1?import?javax.mail.Message;
?2?import?javax.mail.MessagingException;
?3?import?javax.mail.internet.InternetAddress;
?4?import?javax.mail.internet.MimeMessage;
?5?import?org.springframework.mail.MailException;
?6?import?org.springframework.mail.javamail.JavaMailSender;
?7?import?org.springframework.mail.javamail.MimeMessagePreparator;
?8?import?service.OrderManager;
?9??
11?public?class?OrderManagerImpl?extends?BaseManagerImpl?implements?OrderManager?{
12?
13?private?JavaMailSender?mailsender;
14?private?MyMailMessage?message;
15?
16?
17?????public?void?setMessage(CityMailMessage?message)
18?????{
19?????????this.message?=?message;
20?????}
21?????public?void?setMailsender(JavaMailSender?mailsender)?{
22?????????this.mailsender?=?mailsender;
23?????}
24?????public?void?placeOrder(final?String?email)?{
25?????????
26?
27?????????MimeMessagePreparator?preparator?=?new?MimeMessagePreparator()?{
28?????????????public?void?prepare(MimeMessage?mimeMessage)?throws?MessagingException?{
29?????????????????mimeMessage.setRecipient(Message.RecipientType.TO,?
30?????????????????????????new?InternetAddress(email));
31?????????????????mimeMessage.setFrom(new?InternetAddress(message.getFrom()));
32?????????????????/**轉(zhuǎn)換編碼為GBK*/
33?????????????????mimeMessage.setSubject(message.getSubject(),"GBK");
36?????????????????mimeMessage.setText(email+"<br>"+message.getSubject()+message.getText(),"GBK");
37?????????????????
38?????????????}
39?????????};
40?????????try{
41?????????????mailsender.send(preparator);
42?????????}
43?????????catch(MailException?ex)?{
44?????????????//log?it?and?go?on
45?????????????System.err.println(ex.getMessage());????????????
46?????????}
47?????}
48?}
3、spring配置發(fā)送email的applicationContext-email.xml
?1?<?xml?version="1.0"?encoding="UTF-8"?>
?2?<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"
?3?????"http://www.springframework.org/dtd/spring-beans.dtd">
?4?
?5?<beans>
?6?????<bean?id="mailSender"?class="org.springframework.mail.javamail.JavaMailSenderImpl">
?7?????????<property?name="host">
?8?????????????<value>smtp.163.com</value>
?9?????????</property>
10?????????<property?name="username">
11?????????????<value>username</value>
12?????????</property>
13?????????<property?name="password">
14?????????????<value>password</value>
15?????????</property>
16?????????<property?name="javaMailProperties">
17?????????????<props>
18?????????????????<prop?key="mail.smtp.auth">true</prop>
19?????????????????<prop?key="mail.smtp.timeout">25000</prop>
20?????????????</props>
21?????????</property>
22?????</bean>
23?
24?????<bean?id="mailMessage"?class="org.springframework.mail.SimpleMailMessage">
25?????????<property?name="from">
26?????????????<value>Email</value>
27?????????</property>
28?????????<property?name="subject">
29?????????????<value>標題</value>
30?????????</property>
31?????????<property?name="text">
32?????????????<value>內(nèi)容</value>
33?????????</property>
46?????</bean>
47?
48?????<bean?id="orderManager"?class="cn.cityyouth.service.impl.OrderManagerImpl">
49?????????<property?name="mailsender">
50?????????????<ref?bean="mailSender"?/>
51?????????</property>
52?????????<property?name="message">
53?????????????<ref?bean="mailMessage"?/>
54?????????</property>
55?????</bean>
56?
57?</beans>
4、最后配置自己的jsp頁面以及action
?1?package?cn.cityyouth.web.action;
?2?
?3?import?javax.servlet.http.HttpServletRequest;
?4?import?javax.servlet.http.HttpServletResponse;
?5?import?org.apache.struts.action.ActionForm;
?6?import?org.apache.struts.action.ActionForward;
?7?import?org.apache.struts.action.ActionMapping;
?8?import?org.apache.struts.action.ActionMessage;
?9?import?org.apache.struts.action.ActionMessages;
10?import?com.test.service.OrderManager;
11?
12?public?class?SendMailAction?extends?BaseAction?{
13?
14?????/**
15??????*?Method?execute
16??????*?
17??????*?@param?mapping
18??????*?@param?form
19??????*?@param?request
20??????*?@param?response
21??????*?@return?ActionForward
22??????*/
23?????public?ActionForward?execute(ActionMapping?mapping,?ActionForm?form,
24?????????????HttpServletRequest?request,?HttpServletResponse?response)?{
25?????????OrderManager?omi=(OrderManager)this.getBean("orderManager");
26?????????String?useremail="123@163.com";
27??????????omi.placeOrder(useremail);
28????????}
29?}
到此所有的開發(fā)以結(jié)束。
Sring郵件抽象層的主要包是:org.springframework.mail 包。它包含叫MailSender為發(fā)送郵件的核心接口和包含簡單郵件屬性例如from,to,cc,subject,text叫SimpleMailMessage的值對象. 這個包也包含一個檢查異常的層次,它支持一個更高級別的抽象超過低級別的郵件系統(tǒng)異常伴隨根異常存在MailException. 請參考JavaDocs為更多的信息雜郵件異常層次。
spring in action in action also provides a sub-interface of MailSender for specialized JavaMail features such as MIME messages, namely org.springframework.mail.javamail.JavaMailSender It also provides a callback interface for preparation of JavaMail MIME messages, namely org.springframework.mail.javamail.MimeMessagePreparator
Spring也支持一個MailSender的專用于JavaMail特征例如MIME消息子接口,命名為org.springframework.javamail.JavaMailerSener。它也支持一個為JavaMail MIME信息的準備回調(diào)接口,命名為org.springframework.mail.JavaMail.MimeMessagePreparator.
posted on 2005-12-30 12:49
閔毓 閱讀(2203)
評論(2) 編輯 收藏 所屬分類:
Spring in action