posts - 120,  comments - 19,  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 ?。糱ean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
          7 ?。紁roperty name="host">
          8  ?。紇alue>smtp.163.com</value>
          9  </property>
          10 <property name="username">
          11  <value>username</value>
          12?。?property>
          13 <property name="password">
          14 ?。紇alue>password</value>
          15?。?property>
          16 <property name="javaMailProperties">
          17 ?。紁rops>
          18  ?。紁rop key="mail.smtp.auth">true</prop>
          19  ?。紁rop key="mail.smtp.timeout">25000</prop>
          20  </props>
          21 </property>
          22 </bean>
          23
          24 <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
          25 ?。紁roperty name="from">
          26  ?。紇alue>Email</value>
          27 ?。?property>
          28 ?。紁roperty 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 阿成 閱讀(447) 評論(1)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 黑山县| 汝州市| 安图县| 福州市| 青川县| 安徽省| 合江县| 平顶山市| 杨浦区| 南木林县| 马鞍山市| 镇巴县| 尖扎县| 南岸区| 湄潭县| 视频| 且末县| 电白县| 泸溪县| 开封县| 五台县| 始兴县| 定州市| 乐安县| 武义县| 东乡族自治县| 仁布县| 沂源县| 什邡市| 贵德县| 柳林县| 宁化县| 普格县| 永清县| 河津市| 莆田市| 西乌珠穆沁旗| 朝阳县| 德清县| 华安县| 阳曲县|