【Spring】JavaMailSender Spring自帶的郵件推送功能實現


備注:JavaMailSender在spring-context-support.jar中

1.配置spring-mail.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd"> 
    <!-- spring mail begin ############################################## -->
    <bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
         <list>
            <value>/mail.properties</value>
         </list>
      </property>
    </bean>
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
    <bean id="MailSenderDemo" class="com.zlg.test.springmail.MailSenderDemo"></bean>
    <!-- spring mail demo end ############################################## -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
       <property name="host" value="${mail.host}"></property>
       <property name="port" value="${mail.port}"></property>
       <property name="username" value="${mail.username}"></property>
       <property name="password" value="${mail.password}"></property>
       <property name="javaMailProperties">
           <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.timeout">25000</prop>
              <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
              <!-- 如果是網易郵箱, mail.smtp.starttls.enable 設置為 false-->  
              <prop key="mail.smtp.starttls.enable">true</prop>
           </props>
       </property>
    </bean>
</beans>
mail.smtp.socketFactory.class 加上該配置,避免出現認證錯誤

mail.properties
# qq mail server
#mail.protocol=smtp
#mail.port=465
#mail.host=smtp.exmail.qq.com
#mail.username=xxx@qq.com
#mail.password=

# 163 mail server
mail.protocol=smtp
mail.port=465
mail.host=smtp.163.com
mail.username=xxx@163.com
mail.password=

2.web.xml中加入bean配置

<servlet>
        <servlet-name>provider</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                <!-- classpath:applicationContext.xml, -->
                <!-- classpath:applicationContext-servlet.xml, -->
                <!-- classpath:dubbo.xml, -->
                classpath:spring-mail.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>provider</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

 

3.pom.xml中加入jar包依賴

<!-- spring mail需要的jar包 -->
    <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context-support</artifactId>
         <version>4.2.6.RELEASE</version>
    </dependency>
    <dependency>
         <groupId>javax.mail</groupId>
         <artifactId>mail</artifactId>
         <version>1.4.7</version>
    </dependency>

 

4.編寫Java接口文件

package com.zlg.test.springmail;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

/**
 * @Title: MailSenderDemo.java
 * @Package: com.zlg.test.springmail
 * @Description: spring mail 測試
 * @author: zlg
 * @date: 2017年6月20日 上午9:43:45
 * @version: V1.0
 */
public class MailSenderDemo {

    @Autowired
    private JavaMailSender mailSender;

    public void send(SimpleMailMessage mail) {
        mailSender.send(mail);
    }
    
    public JavaMailSender getMailSender(){
        return this.mailSender;
    }

}

5.添加測試類

package com.zlg.test.springmail;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
 * @Title: SendTest.java
 * @Package: com.zlg.test.springmail
 * @Description: TODO
 * @author: zlg
 * @date: 2017年6月20日 上午10:03:36
 * @version: V1.0
 */
public class SendTest {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext(
                "spring-mail.xml");
        MailSenderDemo sender = (MailSenderDemo) ac.getBean("MailSenderDemo");
        /*SimpleMailMessage mail = new SimpleMailMessage();
        mail.setTo("673376601@qq.com");// 收件人郵箱地址
        mail.setFrom("zlg");// 收件人
        mail.setSubject("SpringMailTest");// 主題
        mail.setText("測試Spring自帶郵件發送功能");// 正文
        sender.send(mail);*/
        JavaMailSender javaMailSender = sender.getMailSender();
        MimeMessage mime = javaMailSender.createMimeMessage();
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(mime, true, "utf-8");
            helper.setTo("dszlg@163.com");// 收件人郵箱地址
            helper.setFrom("dszlg@163.com");// 收件人
            helper.setSubject("SpringMailTest");// 主題
            helper.setText("測試Spring自帶郵件發送功能");// 正文
        } catch (MessagingException me) {
            me.printStackTrace();
        }
        javaMailSender.send(mime);
    }

}

6.查看效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM