閔毓
          http://www.eshoo.com.cn 歡迎來到異客中國
          posts - 49,comments - 97,trackbacks - 0
          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 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信息的準備回調接口,命名為org.springframework.mail.JavaMail.MimeMessagePreparator.

          posted on 2005-12-30 12:49 閔毓 閱讀(2208) 評論(2)  編輯  收藏 所屬分類: Spring in action

          FeedBack:
          # re: 使用Spring郵件抽象層發送簡單郵件(通過自己編寫,更新后發布)1
          2005-12-31 09:16 | zhangwen
          spring的郵件支持不是太好,發信時如果smtp服務器要身份驗證的話就很麻煩,還要自己寫個java mail properties.apache common email做的很好~不過中文支持有些問題  回復  更多評論
            
          # re: 使用Spring郵件抽象層發送簡單郵件(通過自己編寫,更新后發布)1
          2012-08-28 14:16 | 44
          rrrrrrrrrrrrrr  回復  更多評論
            
          主站蜘蛛池模板: 桓仁| 海城市| 夏邑县| 耒阳市| 宣城市| 嘉鱼县| 安宁市| 年辖:市辖区| 湖口县| 滁州市| 桐庐县| 宁安市| 石楼县| 南部县| 明光市| 台北县| 古丈县| 视频| 兴国县| 出国| 延寿县| 东乡族自治县| 五华县| 合水县| 兴国县| 巧家县| 尖扎县| 巴里| 永嘉县| 许昌市| 湛江市| 连州市| 兰考县| 玉山县| 宜丰县| 阳谷县| 淮安市| 扎兰屯市| 台东县| 六盘水市| 长葛市|