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>

運行完成:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章