<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    前言:當然,發 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服務器驗證,否則拋出異常,發送會失敗。



      
    posted on 2012-06-11 20:48 fancydeepin 閱讀(8235) 評論(2)  編輯  收藏

    評論:
    # re: Spring 2014-08-22 20:58 | wanglong
    ---------------------------------------------------------------------------------------------------------------------------------------  回復  更多評論
      
    # re: Spring郵件服務:Maven + Spring SMTP Mail[未登錄] 2016-04-11 13:58 | qq
    java.lang.AssertionError
    at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2120)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1912)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:248)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:306)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:296)
    at com.sinoprof.fancy.util.Email.sendMail(Email.java:27)
    at com.sinoprof.test.mybatis.test.EmailTest.testSendMail(EmailTest.java:29)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    不知道出現這個錯誤是什么原因  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品第一国产综合野| 亚洲大尺度无码专区尤物| 97久久国产亚洲精品超碰热| 无码日韩精品一区二区三区免费| 亚洲日韩乱码中文无码蜜桃臀网站| 久久久WWW免费人成精品| 在线观看亚洲成人| 任你躁在线精品免费| 亚洲产国偷V产偷V自拍色戒| 全黄大全大色全免费大片| 国产精品亚洲一区二区三区在线| 国产午夜成人免费看片无遮挡 | 日韩va亚洲va欧洲va国产| 日本道免费精品一区二区| 亚洲伊人久久大香线蕉苏妲己| 人妻无码久久一区二区三区免费 | 18gay台湾男同亚洲男同| 国产电影午夜成年免费视频| 亚洲中文无码a∨在线观看| 无码日韩人妻av一区免费| 亚洲AV无码成人网站在线观看| 亚洲AⅤ优女AV综合久久久| 久久精品无码免费不卡| 亚洲精品国产电影午夜| 女人18特级一级毛片免费视频| 麻豆亚洲AV成人无码久久精品| 亚洲人成无码网WWW| 污污网站免费观看| 亚洲日本VA中文字幕久久道具| 亚洲精品麻豆av| 18成禁人视频免费网站| 亚洲AV无码资源在线观看| 国产av无码专区亚洲国产精品| 免费无遮挡无码永久视频| 亚洲综合偷自成人网第页色| 又黄又爽的视频免费看| 777成影片免费观看| 黄色网址大全免费| 亚洲精品在线播放视频| 精品国产亚洲一区二区在线观看| 无码av免费网站|