一)、在pom.xml中引入
<!-- json处理jar -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
<!-- email jar -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二)、email一些邮箱常用配置,配置在application.properties文件中
邮箱常用配置配置、163服务器地址(smtp.163.com)、126服务器地址(smtp.126.com)、qq服务器地址(smtp.qq.com)
spring.mail.host=smtp.xxx.com #邮箱服务器地址
spring.mail.username=xxx.163.com #用户名
spring.mail.password=aaa #开启POP3之后设置的客户端授权码
spring.mail.default-encoding=UTF-8 #编码
spring.mail.properties.mail.smtp.connectiontimeout=60000 #可选
spring.mail.properties.mail.smtp.timeout=60000 #可选
spring.mail.properties.mail.smtp.writetimeout=60000 #可选
三)创建一个邮箱VO类和一个Controller类
package com.oysept.springboot.vo;
import java.io.Serializable;
public class EmailVO implements Serializable {
private static final long serialVersionUID = 1L;
// 发送人
private String from;
// 接收人
private String to;
// 标题
private String subject;
// 内容
private String content;
// 附件路径
private String filePath;
public String getFrom() {return from;}
public void setFrom(String from) {this.from = from;}
public String getTo() {return to;}
public void setTo(String to) {this.to = to;}
public String getSubject() {return subject;}
public void setSubject(String subject) {this.subject = subject;}
public String getContent() {return content;}
public void setContent(String content) {this.content = content;}
public String getFilePath() {return filePath;}
public void setFilePath(String filePath) {this.filePath = filePath;}
}
测试代码:
package com.oysept.springboot.controller;
import java.io.File;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.MediaType;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.oysept.springboot.vo.EmailVO;
/**
* email controller
* @author ouyangjun
*
*/
@Controller
@RequestMapping(value = "/email")
public class EmailController {
private final Logger LOGGER = LoggerFactory.getLogger(EmailController.class);
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
/**
* 首页测试接口
* 地址: http://localhost:8080/email/home
* @return
*/
@RequestMapping(value = "/home", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public String home(){
return "oysept email home!";
}
/**
* 文本邮件发送
* @param emailVO
* @return
*/
@RequestMapping(value = "/sendSimpleMail", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public EmailVO sendSimpleMail(@RequestBody EmailVO emailVO){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(this.from);
message.setTo(emailVO.getTo());
message.setSubject(emailVO.getSubject());
message.setText(emailVO.getContent());
try {
LOGGER.info("开始-----文本邮件发送");
long begin = System.currentTimeMillis();
mailSender.send(message);
long end = System.currentTimeMillis();
LOGGER.info("结束-----文本邮件发送,耗费" + (end-begin)+"毫秒");
} catch (Exception e) {
LOGGER.info("文本邮件发送,error!", e);
return null;
}
return emailVO;
}
/**
* 富文本邮件
* @param emailVO
* @return
*/
@RequestMapping(value = "/sendHtmlMail", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MimeMessageHelper sendHtmlMail(@RequestBody EmailVO emailVO){
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(this.from);
helper.setTo(emailVO.getTo());
helper.setSubject(emailVO.getSubject());
helper.setText(emailVO.getContent(), true);
LOGGER.info("开始-----富文本邮件发送");
long begin = System.currentTimeMillis();
mailSender.send(message);
long end = System.currentTimeMillis();
LOGGER.info("结束-----富文本邮件发送,耗费" + (end-begin)+"毫秒");
} catch (Exception e) {
LOGGER.info("富文本邮件发送,error!", e);
return null;
}
return helper;
}
/**
* 发送带附件的邮件
* @param emailVO
* @return
*/
@RequestMapping(value = "/sendAttachmentsMail", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MimeMessageHelper sendAttachmentsMail(@RequestBody EmailVO emailVO){
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(this.from);
helper.setTo(emailVO.getTo());
helper.setSubject(emailVO.getSubject());
helper.setText(emailVO.getContent(), true);
// 附件
FileSystemResource resource = new FileSystemResource(new File(emailVO.getFilePath()));
String fileName = resource.getFilename();
helper.addAttachment(fileName, resource);
LOGGER.info("开始-----发送带附件的邮件发送");
long begin = System.currentTimeMillis();
mailSender.send(message);
long end = System.currentTimeMillis();
LOGGER.info("结束-----发送带附件的邮件发送,耗费" + (end-begin)+"毫秒");
} catch (Exception e) {
LOGGER.info("发送带附件的邮件发送,error!", e);
return null;
}
return helper;
}
}
四)、测试对应的方法,下面用postman举例
其它接口测试都一样的,就不举例了。
识别二维码关注个人微信公众号
本章完结,待续,欢迎转载!
本文说明:该文章属于原创,如需转载,请标明文章转载来源!