Spring提供了一個發送電子郵件的高級抽象層,它向用戶屏蔽了底層郵件系統的一些細節,同時負責低層次的代表客戶端的資源處理。Spring郵件抽象層的主要包為org.springframework.mail。它包括了發送電子郵件的主要接口MailSender和 封裝了簡單郵件的屬性如from, to,cc, subject, text的值對象叫做SimpleMailMessage。
1、我們定義一個發送郵件的接口:OrderManager.java
1 public interface OrderManager extends BaseManager{ 2 /** 3 *email,要發送的郵件地址; 4 *Code:激活碼 5 */ 6 public void placeOrder(String email); 7 } |
2、我們需要對該接口進行實現的方法: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 /**轉換編碼為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配置發送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>內容</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 } |
到此所有的開發以結束。
Sring郵件抽象層的主要包是:org.springframework.mail 包。它包含叫MailSender為發送郵件的核心接口和包含簡單郵件屬性例如from,to,cc,subject,text叫SimpleMailMessage的值對象. 這個包也包含一個檢查異常的層次,它支持一個更高級別的抽象超過低級別的郵件系統異常伴隨根異常存在MailException. 請參考JavaDocs為更多的信息雜郵件異常層次。
Spring也支持一個MailSender的專用于JavaMail特征例如MIME消息子接口,命名為org.springframework.javamail.JavaMailerSener。它也支持一個為JavaMail MIME信息的準備回調接口,命名為org.springframework.mail.JavaMail.MimeMessagePreparator.
posted on 2006-01-12 15:14
阿成 閱讀(440)
評論(1) 編輯 收藏 所屬分類:
Spring