Springboot實現郵件發送
目錄:
1、引入依賴:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.springboot</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springbootmail</artifactId>
<dependencies>
<!--應用spring springmvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>naekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
</project>
2、配置application.properties
[email protected]
spring.mail.password=ynuxsvplrsribjca
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true
[email protected]:是發送方的郵箱
spring.mail.password:密碼不是郵箱的密碼,是隨機生成的
步驟:登錄郵箱:
1、
2、
3、下拉到下圖,開啓pop3。發song
4、發送信息獲取授權碼就是代碼裏面用的密碼
其他的一樣
3 DAO 實體類 ConfingEmailName.java
package Dao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component// 將該類對象交給sprin容器
public class ConfingEmailName {
@Value("${spring.mail.username}")//獲取自定義properties裏的發送方名稱
private String sendEmailName ;
public String getSendEmailName() {
return sendEmailName;
}
public void setSendEmailName(String sendEmailName) {
this.sendEmailName = sendEmailName;
}
}
4、業務處理層
接口
package springbootmail.service;
import java.io.File;
public interface IsendSimpleEmainService {
//參數描述 1,發送給誰,2,標題 3,郵件內容
void sendEmaile(String sendTo,String Title,String content);
void sendFileEmaile(String sendTo,String Title,String content,File file);
//發送帶模版的郵件 基於freemarker // info參數就是我們要發送的模版
void sendFileTemplateEmaile(String sendTo,String Title,String info);
}
實現類:
package springbootmail.service;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.amqp.RabbitProperties.Template;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import Dao.ConfingEmailName;
@Service
public class EmailserviceImpl implements IsendSimpleEmainService {
@Autowired
private ConfingEmailName name;
@Autowired
private JavaMailSender send;
@Override
/*
* 發送簡單郵件,純文本 1 誰發送 ,可以在ConfingEmailName.java類得到 @Autowired private
* ConfingEmailName name; 2 注入 @Autowired private JavaMailSender send;
* 郵件發送對象 3 構建一封郵件 由SimpleMailMessage實體類api 完成
*/
public void sendEmaile(String sendTo, String Title, String content) {
// TODO Auto-generated method stub
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(name.getSendEmailName());//誰發送
message.setTo(sendTo);//發送給誰
message.setSubject(Title);//發送郵件的標題
message.setText(content);//發送郵件內容
send.send(message);
}
@Override
/* 實現帶附件的郵件發送
* 1 需要由MimeMessage類封裝成mime類型
* 2 郵件信息
* */
public void sendFileEmaile(String sendTo, String Title, String content,
File file) {
MimeMessage message = send.createMimeMessage();
try{
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(name.getSendEmailName());
helper.setTo(sendTo);
helper.setSubject(Title);
helper.setText(content);
//file 的處理
FileSystemResource resouce = new FileSystemResource(file);
helper.addAttachment("哈哈哈附件", resouce);
}
catch(Exception e){
e.printStackTrace();
}
send.send(message);
}
@Autowired
private FreeMarkerConfigurer freeMarker;
@Override
public void sendFileTemplateEmaile(String sendTo, String Title, String info) {
MimeMessage message = send.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(name.getSendEmailName());
helper.setTo(sendTo);
helper.setSubject(Title);
// 模版數據的處理
Map<String, Object> mode1 = new HashMap<String, Object>();
mode1.put("username", " 小紅");
// 得到模版
freemarker.template.Template template = freeMarker.getConfiguration().getTemplate(info);
// 將數據與模版封裝成字符串
String html = FreeMarkerTemplateUtils.processTemplateIntoString(
template, mode1);
//將字符串封到helper
helper.setText(html,true);
} catch (Exception e) {
e.printStackTrace();
}
send.send(message);
}
}
5、控制層controer SendMaileController.java
package Controller;
import java.io.File;
import javax.mail.internet.MimeMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sun.mail.handlers.multipart_mixed;
import springbootmail.service.IsendSimpleEmainService;
@Controller
public class SendMaileController {
@Autowired
JavaMailSenderImpl mailSender;
@Autowired
private IsendSimpleEmainService service;
@RequestMapping("/send")
@ResponseBody
public String send(){
SimpleMailMessage mm=new SimpleMailMessage();
mm.setSubject("通知");
mm.setText("今晚7點開會");
mm.setTo("[email protected]");
mm.setFrom("[email protected]");
mailSender.send(mm);
return"ok";
}
// @RequestMapping("/sendtest")
// @ResponseBody
//public void test2() {
// //複雜的消息郵件
// MimeMessage aa=mailSender.createMimeMessage();
// MimeMessageHelper hh=new MimeMessageHelper(aa,multipart:true);
// hh.setSubject("通知");
// hh.setText("<b styles='color:red'>今晚7點開會</b>",html:true);
// hh.setTo("[email protected]");
// hh.setFrom("[email protected]");
//
//
// //上傳文件、
// hh.addAttachment(attachmentFilename: "1.jsp", new File(pathname:"C:\\Users\\符加詩\\Desktop\7"));
// hh.addAttachment(attachmentFilename: "2.jsp", new File(pathname:"C:\\Users\\符加詩\\Desktop\1"));
// mailSender.send(aa);
//
//}
//
//
@RequestMapping("/sendFile")
@ResponseBody
public String sendFile(){
//File file = new File("src/main/resources/static/7.PNG");
File file = new File("src/main/resources/static/springboot.database.txt");
service.sendFileEmaile("[email protected]", "玩", "很好玩", file);
return"sendFile";
}
@RequestMapping("/sendTemplate")
@ResponseBody
public String sendTemplate(){
service.sendFileTemplateEmaile("[email protected]", "玩", "addUser.html");
return"sendTemplate";
}
}
6、啓動類test
package Test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages={"Controller","springbootmail.service","dao"})//此處除了掃描controller service 還要掃描獲的自定義文件的類包名
public class test {
public static void main(String[] args) {
SpringApplication.run(test.class, args);
}
}
前端頁面:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${username}
${username}
${username}
${username}
</body>
</html>
運行完成: