SSM 框架整合 spring 傳送郵件功能實現!
阿新 • • 發佈:2018-12-21
基於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.配置郵件伺服器等資訊。
- 先在郵箱中設定開啟smtp和pop3服務然後拿到授權碼(需要儲存下來,配置到程式碼中):我這裡使用的是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.測試結果。如圖:
- 訪問介面執行程式
- 檢視郵箱的收到的郵件資訊 則表明功能實現!