午后星期午

          Spring郵件服務:Maven + Spring SMTP Mail

          前言:當然,發 email 不一定要用 Spring,直接用 javax.mail 的API 就能實現。但是由于 Spring 提供了一個發送電子郵件的高級抽象層,
          它向用戶屏蔽了底層郵件系統的一些細節,同時負責低層次的代表客戶端的資源處理。所以用 Spring 來發送 email 會省事很多和讓發郵件變的簡單許多。
          Spring郵件抽象層的主要包為org.springframework.mail。它包括了發送電子郵件的主要接口MailSender和封裝了簡單郵件屬性的值對象SimpleMailMessage。

          環境:
          Spring     2.5.6 
          Javamail  1.4.4 
          Maven     3.0.4 
          Myeclipse 8.6.1

          項目結構:


          spring-smtp-mail.xml
          <beans xmlns=http://www.springframework.org/schema/beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
            
              
          <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
                 
          <!-- 服務器 -->
                  
          <property name="host" value="smtp.yeah.net" />
                  
          <!-- 端口號 -->
                  
          <property name="port" value="25" />
                  
          <!-- 用戶名 -->
                  
          <property name="username" value="fancydeepin@yeah.net" />
                  
          <!--  密碼   -->
                  
          <property name="password" value="********" />
                  
          <!-- SMTP服務器驗證 -->
                  
          <property name="javaMailProperties">
                      
          <props>
                          
          <!-- 驗證身份 -->
                         
          <prop key="mail.smtp.auth">true</prop>
                     
          </props>
                  
          </property>
              
          </bean>
              
          <!-- 
                 目前我用過的EMAIL賬號都是網易的,下面列出網易的SMTP服務器名和端口號:
                  網易郵箱          SMTP服務器     SMTP端口     POP3服務器       POP3端口
                  @126.com     smtp.126.com      25          pop3.126.com      110
                  @163.com     smtp.163.com      25          pop3.163.com      110
                  @yeah.net    smtp.yeah.net      25          pop3.yeah.net     110
              
          -->
              
              
          <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
                 
          <!-- 發件人email -->
                  
          <property name="from" value="fancydeepin@yeah.net" />
                  
          <!-- 
                   收件人email
                  <property name="to" value="to@yeah.net" />
                  email主題(標題)
                  <property name="subject" value="Subject" />
                  email主題內容
                  <property name="text">
                    <value>ContentText</value>
                  </property>
                  
          -->
              
          </bean>
              
              
          <bean id="simpleMail" class="com.fancy.util.Email">
                  
          <property name="mailSender" ref="mailSender" />
                  
          <property name="simpleMailMessage" ref="simpleMailMessage" />
              
          </bean>
              
          </beans>

          Email.java
          package com.fancy.util;

          import org.springframework.mail.MailSender;
          import org.springframework.mail.SimpleMailMessage;
          /**
           * -----------------------------------------
           * @文件: Email.java
           * @作者: fancy
           * @郵箱: fancydeepin@yeah.net
           * @時間: 2012-6-11
           * @描述: 發送Email工具類
           * -----------------------------------------
           
          */

          public class Email {
              
              
          private MailSender mailSender;
              
          private SimpleMailMessage simpleMailMessage;
              
            
          /**
               * @方法名: sendMail 
               * @參數名:
          @param subject  郵件主題
               * @參數名:
          @param content 郵件主題內容
               * @參數名:
          @param to         收件人Email地址
               * @描述語: 發送郵件
               
          */

              
          public void sendMail(String subject, String content, String to) {
                  
                  simpleMailMessage.setSubject(subject); 
          //設置郵件主題
                  simpleMailMessage.setTo(to);             //設定收件人
                  simpleMailMessage.setText(content);  //設置郵件主題內容
                  mailSender.send(simpleMailMessage); //發送郵件
              }

               
          //Spring 依賴注入
              public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
                  
          this.simpleMailMessage = simpleMailMessage;
              }

               
          //Spring 依賴注入
              public void setMailSender(MailSender mailSender) {
                  
          this.mailSender = mailSender;
              }

          }


          Junit Test:EmailTest.java
          package com.fancy.test;

          import junit.framework.TestCase;
          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;
          import com.fancy.util.Email;
          /**
           * -----------------------------------------
           * @文件: EmailTest.java
           * @作者: fancy
           * @郵箱: fancydeepin@yeah.net
           * @時間: 2012-6-11
           * @描述: Junit測試,運行將發送一封email
           * -----------------------------------------
           
          */

          public class EmailTest extends TestCase {

              
          public void testSendMail() {
                  ApplicationContext context 
          = new ClassPathXmlApplicationContext("spring-smtp-mail.xml");
                  Email mail 
          = (Email)context.getBean("simpleMail");
                  mail.sendMail(
          "Spring SMTP Mail Subject""Spring SMTP Mail Text""fancydeepin@yeah.net");
                  
          //mail.sendMail("標題", "內容", "收件人郵箱");
              }


          }


          EmailAppTest.java 也是一個測試類,跟 Junit 的 EmailTest.java 是幾乎一樣的,這里就不貼出來了,再來看下 Maven:

          pom.xml
          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation
          ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            
          <modelVersion>4.0.0</modelVersion>
            
          <groupId>com.fancy</groupId>
            
          <artifactId>spring-mail-example</artifactId>
            
          <version>1.0</version>
            
          <packaging>jar</packaging>
            
          <name>spring-mail-example</name>
            
          <url>http://maven.apache.org</url>
            
          <properties>
              
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            
          </properties>

            
          <dependencies>
            
              
          <!-- Spring framework -->
              
          <dependency>
                
          <groupId>org.springframework</groupId>
                
          <artifactId>spring</artifactId>
                
          <version>2.5.6</version>
              
          </dependency>
              
              
          <!-- Javamail API -->
              
          <dependency>
                
          <groupId>javax.mail</groupId>
                
          <artifactId>mail</artifactId>
                
          <version>1.4.4</version>
              
          </dependency>
              
              
          <dependency>
                
          <groupId>junit</groupId>
                
          <artifactId>junit</artifactId>
                
          <version>3.8.1</version>
                
          <scope>test</scope>
              
          </dependency>
              
            
          </dependencies>
          </project>

          Run 一下 EmailTest.java,稍等一會就能收到一封 Email






          OK,郵件發送成功。另外,在用網易郵箱測試的時候,發現不進行 SMTP驗證 郵件也能發送成功,曾在 Shopxx 中提到,
          如果是 Gmail 就必須配置SMTP服務器驗證,否則拋出異常,發送會失敗。


             [ 轉載出處:http://www.aygfsteel.com/fancydeepin ]

          posted on 2013-12-31 13:50 午后星期午 閱讀(311) 評論(0)  編輯  收藏 所屬分類: JavaEE

          主站蜘蛛池模板: 阿图什市| 黑山县| 阿拉善盟| 临沧市| 文水县| 丁青县| 金秀| 长宁县| 云龙县| 永康市| 沂南县| 德保县| 仁化县| 长宁县| 武宣县| 喜德县| 潮安县| 禄丰县| 雷州市| 大冶市| 利辛县| 浠水县| 武安市| 临夏县| 荔波县| 佛冈县| 赣榆县| 沧源| 堆龙德庆县| 峨眉山市| 铅山县| 静宁县| 额济纳旗| 陆河县| 木兰县| 油尖旺区| 沈阳市| 滨海县| 平舆县| 莱西市| 常宁市|