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

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

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

    隨筆-126  評(píng)論-247  文章-5  trackbacks-0

    前言:當(dāng)然,發(fā) email 不一定要用 Spring,直接用 javax.mail 的API 就能實(shí)現(xiàn)。但是由于 Spring 提供了一個(gè)發(fā)送電子郵件的高級(jí)抽象層,
    它向用戶屏蔽了底層郵件系統(tǒng)的一些細(xì)節(jié),同時(shí)負(fù)責(zé)低層次的代表客戶端的資源處理。所以用 Spring 來發(fā)送 email 會(huì)省事很多和讓發(fā)郵件變的簡(jiǎn)單許多。
    Spring郵件抽象層的主要包為org.springframework.mail。它包括了發(fā)送電子郵件的主要接口MailSender和封裝了簡(jiǎn)單郵件屬性的值對(duì)象SimpleMailMessage。

    環(huán)境:
    Spring     2.5.6 
    Javamail  1.4.4 
    Maven     3.0.4 
    Myeclipse 8.6.1

    項(xiàng)目結(jié)構(gòu):


    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">
           
    <!-- 服務(wù)器 -->
            
    <property name="host" value="smtp.yeah.net" />
            
    <!-- 端口號(hào) -->
            
    <property name="port" value="25" />
            
    <!-- 用戶名 -->
            
    <property name="username" value="fancydeepin@yeah.net" />
            
    <!--  密碼   -->
            
    <property name="password" value="********" />
            
    <!-- SMTP服務(wù)器驗(yàn)證 -->
            
    <property name="javaMailProperties">
                
    <props>
                    
    <!-- 驗(yàn)證身份 -->
                   
    <prop key="mail.smtp.auth">true</prop>
               
    </props>
            
    </property>
        
    </bean>
        
    <!-- 
           目前我用過的EMAIL賬號(hào)都是網(wǎng)易的,下面列出網(wǎng)易的SMTP服務(wù)器名和端口號(hào):
            網(wǎng)易郵箱          SMTP服務(wù)器     SMTP端口     POP3服務(wù)器       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">
           
    <!-- 發(fā)件人email -->
            
    <property name="from" value="fancydeepin@yeah.net" />
            
    <!-- 
             收件人email
            <property name="to" value="to@yeah.net" />
            email主題(標(biāo)題)
            <property name="subject" value="Subject" />
            email主題內(nèi)容
            <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
     * @時(shí)間: 2012-6-11
     * @描述: 發(fā)送Email工具類
     * -----------------------------------------
     
    */

    public class Email {
        
        
    private MailSender mailSender;
        
    private SimpleMailMessage simpleMailMessage;
        
      
    /**
         * @方法名: sendMail 
         * @參數(shù)名:
    @param subject  郵件主題
         * @參數(shù)名:
    @param content 郵件主題內(nèi)容
         * @參數(shù)名:
    @param to         收件人Email地址
         * @描述語(yǔ): 發(fā)送郵件
         
    */

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

         
    //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
     * @時(shí)間: 2012-6-11
     * @描述: Junit測(cè)試,運(yùn)行將發(fā)送一封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("標(biāo)題", "內(nèi)容", "收件人郵箱");
        }


    }


    EmailAppTest.java 也是一個(gè)測(cè)試類,跟 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,稍等一會(huì)就能收到一封 Email






    OK,郵件發(fā)送成功。另外,在用網(wǎng)易郵箱測(cè)試的時(shí)候,發(fā)現(xiàn)不進(jìn)行 SMTP驗(yàn)證 郵件也能發(fā)送成功,曾在 Shopxx 中提到,
    如果是 Gmail 就必須配置SMTP服務(wù)器驗(yàn)證,否則拋出異常,發(fā)送會(huì)失敗。



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

    評(píng)論:
    # re: Spring 2014-08-22 20:58 | wanglong
    ---------------------------------------------------------------------------------------------------------------------------------------  回復(fù)  更多評(píng)論
      
    # re: Spring郵件服務(wù):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)
    不知道出現(xiàn)這個(gè)錯(cuò)誤是什么原因  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲?v女人的天堂在线观看| 无码人妻丰满熟妇区免费| 亚洲国产成人AV在线播放| 亚洲免费精彩视频在线观看| 亚洲美女高清一区二区三区 | 亚洲精品国产福利在线观看| 亚洲av无码乱码国产精品| 亚洲国产精品无码专区影院 | 美女被cao免费看在线看网站| 91在线手机精品免费观看| 日本免费久久久久久久网站| 四虎成人精品永久免费AV| 国产一区二区三区免费| 久久这里只精品国产免费10| 热re99久久6国产精品免费| 97精品免费视频| 最近新韩国日本免费观看| 成人免费福利视频| 好男人www免费高清视频在线| 尤物永久免费AV无码网站| 亚洲国产成人久久综合| 亚洲熟妇丰满xxxxx| 黄色免费网站在线看| 精品乱子伦一区二区三区高清免费播放 | 老司机69精品成免费视频| 99re6热视频精品免费观看| 114一级毛片免费| 好男人看视频免费2019中文| 免费二级毛片免费完整视频| 亚洲综合激情另类专区| 亚洲第一区香蕉_国产a| 久久精品国产亚洲AV无码娇色| 亚洲乱码在线观看| 一进一出60分钟免费视频| 国产在线观看免费视频软件| 91免费国产自产地址入| 精品国产免费观看| 久久综合亚洲色HEZYO国产| 亚洲av无码一区二区三区网站 | 亚洲精品国产品国语在线| 亚洲性猛交xx乱|