1. 程式人生 > >SSM 框架整合 spring 傳送郵件功能實現!

SSM 框架整合 spring 傳送郵件功能實現!

基於SSM的 spring 傳送郵件的實現

  • 由於考慮到專案中需要,如果程式出現異常或其它問題,可以傳送郵件來及時提醒後臺維護人員處理。所以目前考慮使用JavaMail來實現郵件傳送!如下,是我整理的一些內容,做個筆記記錄下:(當然,在這功能實現之前,需要搭建好ssm的基本框架!)

1.匯入jar包。首先我們需要在我們spring專案中新增以下兩個jar包(我是使用的maven所以直接配置依賴資訊)

<!--新增spring支援email 依賴-->
<dependency>
      <groupId>org.springframework</groupId
>
<artifactId>spring-context-support</artifactId> <version>4.3.19.RELEASE</version> </dependency> <!--郵件傳送--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>
1.6.1</version> </dependency>

2.配置郵件伺服器等資訊。

  • 先在郵箱中設定開啟smtppop3服務然後拿到授權碼(需要儲存下來,配置到程式碼中):我這裡使用的是QQ郵箱,如下: 在這裡插入圖片描述 mail.properties檔案(郵件相關的配置):
#伺服器主機名 smtp.xx.com
mail.smtp.host=smtp.qq.com
[email protected]
#密碼/客戶端授權碼
mail.smtp.password=這裡填入第二步中生成的授權碼
#編碼字元
mail.smtp.defaultEncoding=utf-8
#是否進行使用者名稱密碼校驗
mail.smtp.auth=true
#設定超時時間
mail.smtp.timeout=20000

3.配置spring-dao.xml,在配置檔案中匯入properties檔案的屬性(根據自己專案實際情況來配置,mail.properties的掃描):

<!--讀取屬性檔案-->
<context:property-placeholder location="classpath:*.properties"/>
  • 然後注入一個郵件傳送的bean介面,並且初始化配置相關屬性(我單獨編寫一個spring-mail.xml檔案來配置,可以直接配置在spring-mvc.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">
    <!--配置郵件介面-->
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${mail.smtp.host}"/>
        <property name="username" value="${mail.smtp.username}"/>
        <property name="password" value="${mail.smtp.password}"/>
        <property name="defaultEncoding" value="${mail.smtp.defaultEncoding}"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
            </props>
        </property>
    </bean>
</beans>

所有配置都完成了

4.編寫一個測試類來測試一下:

package com.mzj.study.controller;

import com.mzj.study.utils.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Author: 小莫
 * Date: 2018-11-12 18:10
 * Description:<描述>
 */
@RestController
@RequestMapping("/email")
public class SenEmailController {

    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${mail.smtp.username}")
    private String emailFrom;

    @Value("${mail.smtp.tousername}")
    private String toEmail;

    @RequestMapping("send")
    public Object senMsg(){
        SimpleMailMessage message = new SimpleMailMessage();
        //發件人的郵箱地址
        message.setFrom(emailFrom);
        //收件人的郵箱地址
        message.setTo(toEmail);
        //郵件主題
        message.setSubject("spring email test!!!!");
        //郵件內容
        message.setText("收到的郵件內容:spring email test !!!");
        //傳送郵件
        javaMailSender.send(message);
        return JsonData.success("success",message);
    }
}

5.測試結果。如圖:

  • 訪問介面執行程式 在這裡插入圖片描述
  • 檢視郵箱的收到的郵件資訊 則表明功能實現!