spring boot 发送邮件
简单几步,实现在spring boot中发送邮件:
1、引入依赖:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
2、application.yml中配置邮件相关的参数:
- spring:
- mail:
- host: smtp.exmail.qq.com
- username: 用户名
- password: 密码
- properties:
- mail:
- smtp:
- auth: true
- starttls:
- enable: true
- required: true
3、邮件service代码:
- @Service
- public class MailService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Autowired
- private JavaMailSender sender;
- @Value("${spring.mail.username}")
- private String from;
- /**
- * 发送纯文本的简单邮件
- * @param to
- * @param subject
- * @param content
- */
- public void sendSimpleMail(String to, String subject, String content){
- SimpleMailMessage message = new SimpleMailMessage();
- message.setFrom(from);
- message.setTo(to);
- message.setSubject(subject);
- message.setText(content);
- try {
- sender.send(message);
- logger.info("简单邮件已经发送。");
- } catch (Exception e) {
- logger.error("发送简单邮件时发生异常!", e);
- }
- }
- /**
- * 发送html格式的邮件
- * @param to
- * @param subject
- * @param content
- */
- public void sendHtmlMail(String to, String subject, String content){
- MimeMessage message = sender.createMimeMessage();
- try {
- //true表示需要创建一个multipart message
- MimeMessageHelper helper = new MimeMessageHelper(message, true);
- helper.setFrom(from);
- helper.setTo(to);
- helper.setSubject(subject);
- helper.setText(content, true);
- sender.send(message);
- logger.info("html邮件已经发送。");
- } catch (MessagingException e) {
- logger.error("发送html邮件时发生异常!", e);
- }
- }
- /**
- * 发送带附件的邮件
- * @param to
- * @param subject
- * @param content
- * @param filePath
- */
- public void sendAttachmentsMail(String to, String subject, String content, String filePath){
- MimeMessage message = sender.createMimeMessage();
- try {
- //true表示需要创建一个multipart message
- MimeMessageHelper helper = new MimeMessageHelper(message, true);
- helper.setFrom(from);
- helper.setTo(to);
- helper.setSubject(subject);
- helper.setText(content, true);
- FileSystemResource file = new FileSystemResource(new File(filePath));
- String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
- helper.addAttachment(fileName, file);
- sender.send(message);
- logger.info("带附件的邮件已经发送。");
- } catch (MessagingException e) {
- logger.error("发送带附件的邮件时发生异常!", e);
- }
- }
- /**
- * 发送嵌入静态资源(一般是图片)的邮件
- * @param to
- * @param subject
- * @param content 邮件内容,需要包括一个静态资源的id,比如:<img src=\"cid:rscId01\" >
- * @param rscPath 静态资源路径和文件名
- * @param rscId 静态资源id
- */
- public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
- MimeMessage message = sender.createMimeMessage();
- try {
- //true表示需要创建一个multipart message
- MimeMessageHelper helper = new MimeMessageHelper(message, true);
- helper.setFrom(from);
- helper.setTo(to);
- helper.setSubject(subject);
- helper.setText(content, true);
- FileSystemResource res = new FileSystemResource(new File(rscPath));
- helper.addInline(rscId, res);
- sender.send(message);
- logger.info("嵌入静态资源的邮件已经发送。");
- } catch (MessagingException e) {
- logger.error("发送嵌入静态资源的邮件时发生异常!", e);
- }
- }
- }
4、单元测试代码:
- public class MailTests extends BasicUtClass{
- @Autowired
- private MailService mailService;
- private String to = "xujijun@mail.cn";
- @Test
- public void sendSimpleMail() {
- mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容");
- }
- @Autowired
- VelocityEngine velocityEngine;
- @Test
- public void sendHtmlMail() {
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("time", XDateUtils.nowToString());
- model.put("message", "这是测试的内容。。。");
- model.put("toUserName", "张三");
- model.put("fromUserName", "老许");
- String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "welcome.vm", "UTF-8", model);
- mailService.sendHtmlMail(to, "主题:html邮件", content);
- }
- @Test
- public void sendAttachmentsMail() {
- mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Xu\\Desktop\\csdn\\1.png");
- }
- @Test
- public void sendInlineResourceMail() {
- String rscId = "rscId001";
- mailService.sendInlineResourceMail(to,
- "主题:嵌入静态资源的邮件",
- "<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>",
- "C:\\Users\\Xu\\Desktop\\csdn\\1.png",
- rscId);
- }
- }
源代码参考:https://github.com/xujijun/my-spring-boot