抱歉,迟到了近一年的更新,这一年挺忙的,发生了不少事情,就厚脸皮拖更了,抱歉。
如今状态回来了,打算分享下近期学到的东西,这一年期间学到的东西可能会随意更新,其实也就是玩了下C# + unity3D,原本打算作个长期项目,可是申报比赛连预选都没有过,预选都是垫底的。项目展现视频见这个。还有就是和学院老师作了智慧博物馆的项目,文物的建模与AR以及互动小游戏都有参与。html
挺长时间了,一直在学Spring、SpringMVC、SpringBoot、Mybatis这些,可是感受学了蛮久但不精通,也就不敢乱分享高深的。如今在作一个系统,须要发送邮件给用户,网上找了一圈相关博客,参考大佬作了本身的一个记录。也借机回归一周一更的状态,不写点东西对不起你们,嘿嘿。java
在咱们平时,时常须要利用邮箱注册各类各样的帐号或者接收一些通知信息。这使得一个功能完善的系统必然会有一个邮件发送功能。下面就是我近期学习的一个邮件发送系统demo。git
Spring项目中,邮件发送使用Spring提供的org.springframework.mail.javamail.JavaMailSender,它提供了一些简单易用的方法,能够发送简单邮件、带附件的邮件、HTML格式的邮件、以及依靠固定模板的邮件。github
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
请修改username及password为你的发件邮箱,各平台发件密码规格不同,切须要卡通smtp功能,请看各平台要求。
以前用QQ邮箱要求配置后,测试好屡次都没法发送,建议使用其余邮箱,笔者用163邮箱,但各位注意163邮箱默认在邮件后附带推广,记得在设置中关闭,以前测试的时候很坑。web
server: port: 8080 spring: mail: host: smtp.163.com username: 123456789@163.com password: 123456789 properties: mail: smtp: auth: true starttls: enable: true required: true
// 简单邮件 @RequestMapping("sendSimpleEmail") public String sendSimpleEmail() { try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(toEmail); // 接收地址,可传入数组进行群发 message.setSubject("新年好"); // 标题 message.setText("新年快乐,完事大吉\n 新年新气象"); // 内容 javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } }
启动项目,发送 http://localhost:8080/email/sendSimpleEmail 便可发送邮件
结果以下:
spring
请看如下代码,或GitHub地址clone项目查看,有完整注释。数组
package com.mxwbq.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import javax.mail.internet.MimeMessage; import java.io.File; /** * Created by mxwbq on 2019/3/29. */ @RestController @RequestMapping("/email") public class EmailController { @Autowired private JavaMailSender javaMailSender; @Value("${spring.mail.username}") private String from; // 目标邮箱地址,记得更换 private String toEmail = "123456789@163.com"; @Autowired private TemplateEngine templateEngine; // 简单邮件 @RequestMapping("sendSimpleEmail") public String sendSimpleEmail() { try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(toEmail); // 接收地址,可传入数组进行群发,下同 message.setSubject("新年好"); // 标题 message.setText("新年快乐,完事大吉\n 新年新气象"); // 内容 javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送Html格式邮件 @RequestMapping("sendHtmlEmail") public String sendHtmlEmail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("HTML格式的邮件"); // 标题 // 带HTML格式的内容 StringBuffer sb = new StringBuffer( "<h1><p style='color:#42b983'>使用Spring Boot发送HTML格式邮件</p></h1>" + "<p>这里是正文:</p>" + "<p>这里是听雨轩地址:www.nucode.cn</p>"); helper.setText(sb.toString(), true); // 第二个参数 true 表明规定邮件格式为HTML javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送邮件携带附件 @RequestMapping("sendAttachmentsMail") public String sendAttachmentsMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("带附件的邮件"); // 标题 helper.setText("详情参见附件内容!"); // 内容 // 传入附件 FileSystemResource file = new FileSystemResource(new File("src\\main\\resources\\static\\file\\SpringBoot_Email文档.docx")); helper.addAttachment("SpringBoot_Email文档.docx", file); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送附带静态资源的邮件 @RequestMapping("sendInlineMail") public String sendInlineMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("带静态资源的邮件"); // 标题 helper.setText("<html><body>生日快乐:<img src='cid:img'/></body></html>", true); // 内容 // 传入附件 FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/img/礼物.jpg")); helper.addInline("img", file); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送模板邮件 @RequestMapping("sendTemplateEmail") public String sendTemplateEmail(String registerURL) { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("邮件模板测试"); // 标题 // 处理邮件模板 Context context = new Context(); context.setVariable("registerURL", registerURL); String template = templateEngine.process("register", context); helper.setText(template, true); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } }
https://github.com/mxbq/SpringBoot_Studyapp
本文参考自MrBird大佬的博客:https://mrbird.cc/Spring-Boot-Email.html,有删改及自我实操问题汇总。ide
新的开始,再也不颓废。
谢谢你们spring-boot
以上