十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
分析
目前成都创新互联公司已为近1000家的企业提供了网站建设、域名、网页空间、网站托管、服务器租用、企业网站设计、城口网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。工作中难免会用到邮箱服务,这里整理了五种邮件发送模式:发送文本邮件,发送HTML邮件,发送附件邮件,发送内联资源邮件,发送模板邮件。以供大家学习参考。最后实战部分模拟邮箱注册含源码。
看一下图(有图有真相)
提前准备
pom.xml 配置
application.properties中添加邮箱配置
#邮箱服务器地址 spring.mail.protocol=smtp spring.mail.host=smtp.qq.com #邮箱服务器地址 spring.mail.username=************@qq.com #邮箱密码 spring.mail.password=*********** spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
注意:若是QQ spring.mail.password=QQ授权码,需要开启QQ授权码
发送简单文本邮件
@RunWith(SpringRunner.class) @SpringBootTest public class EmailTests { @Autowired private JavaMailSender javaMailSender; @Autowired private TemplateEngine templateEngine; //读取配置文件中的参数 @Value("${spring.mail.username}") private String sender; private static final String recipient = "*************@163.com" ; /** * 发送简单文本邮件 */ @Test public void sendSimpleEmail() { SimpleMailMessage message = new SimpleMailMessage(); // 发送者 message.setFrom(sender); // 接收者 message.setTo(recipient); //邮件主题 message.setSubject("主题:文本邮件"); // 邮件内容 message.setText("骚扰邮件勿回"); javaMailSender.send(message); } }
发送HTML邮件
新增发送HTML邮件测试方法
/** * 发送Html邮件 */ @Test public void sendHtmlEmail() { MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(recipient); helper.setSubject("主题:HTML邮件"); StringBuffer sb = new StringBuffer(); sb.append("
红色字
") .append("右对齐
"); helper.setText(sb.toString(), true); } catch (MessagingException e) { throw new RuntimeException("Messaging Exception !", e); } javaMailSender.send(message); }发送内联资源邮件
新增发送内联资源邮件测试方法
/** * 发送内联资源邮件 */ @Test public void sendInlineResourceMail() { MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(recipient); helper.setSubject("主题:这是有图片的邮件"); String imgId = "avatar"; String content="
宫崎骏电影图片:"; helper.setText(content, true) ; FileSystemResource res = new FileSystemResource(new File("src/main/resources/static/images/avatar.jpg")); helper.addInline(imgId, res); } catch (MessagingException e) { throw new RuntimeException("Messaging Exception !", e); } javaMailSender.send(message); }发送模板邮件 重点
pom中导入thymeleaf的包
新增模板emailTemplate.html
新增发送模板邮件测试方法
/** * 发送模板邮件 */ @Test public void sendTemplateMail() { MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(recipient); helper.setSubject("主题:模板邮件"); Context context = new Context(); context.setVariable("id", "wenter"); String emailContent = templateEngine.process("emailTemplate", context); helper.setText(emailContent, true); } catch (MessagingException e) { throw new RuntimeException("Messaging Exception !", e); } javaMailSender.send(message); }
注:很多时候邮采用异步的方式来发送邮件,加快主交易执行速度,在实际项目中可以采用MQ发送邮件相关参数,监听到消息队列之后启动发送邮件。
实战部分模拟邮箱注册
很多网站都支持邮箱注册,以下将实现邮箱注册
功能:支持登录,注册,激活,重置密码。
效果如图
注册成功
未激活登录
激活邮件 去激活
激活后,登录成功
重置密码
重置密码邮件
输入之前的密码登陆
输入重置密码登陆
错误邮箱提示
代码
引入架包,修改pom.xml
新建实体类User.java与RequestData.java
略了(看代码)
导入静态资源
css/js/….
编写js
$("#js-btn").click(function() { var data = {} ; var name = $("#js-btn").attr(\'class\') ; var url = "" ; if(name.indexOf("rtn")>0) { data.userEmail = $("#js-field__email").val() ; data.userPass = $("#js-field__pass").val() ; url = "/user/login" ; } else if(name.indexOf("new")>0) { data.userEmail = $("#js-field__email").val() ; data.userPass = $("#js-field__pass").val() ; data.userRepass = $("#js-field__r-pass").val() ; url = "/user/register" ; } else if(name.indexOf("rst")>0) { data.userEmail = $("#js-field__email").val() ; url = "/user/forget" ; } submit(data, url) ; }); function submit(data,url) { $.ajax({ cache: !1, type: "POST", url: url, data: data, async: !0, beforeSend: function () { $("#js-btn").html("提交中..."), $("#js-btn").attr("disabled", "disabled") }, success: function (data) { var result = jQuery.parseJSON(data); layer.alert(result.message); }, complete: function () { $("#js-btn").html("success"), $("#js-btn").removeAttr("disabled") } }) }
编写controler
/** * Created by yando on 2017/11/22. */ @RestController @RequestMapping(value = "user") public class UserController { @Autowired private JavaMailSender javaMailSender; @Autowired private TemplateEngine templateEngine; @Value("${spring.mail.username}") private String sender; private RequestData requestData = new RequestData() ; public static Map
结束了
执行RunApplication.java,看效果吧。
请测试邮件用自己的 不要给博主造成不必要的影响 谢谢
源码下载
SpringBoot进阶邮件服务(实战模拟邮箱注册含源码)