纯文本格式,比较简单,使用SimpleMailMessage即可。
/** * 纯文本格式 * @return */ @GetMapping("/simple") public String simpleSend() { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("499452441@qq.com"); message.setTo("499452441@qq.com"); message.setSubject("主题:来自oKong邮件"); message.setText("公众号:一枚趔趄的猿(lqdevOps),作者:oKong"); mailSender.send(message); return "发送成功!"; }启动后,发送,一切正常情况下,可以看见邮件发送成功了。
附件格式上文有提到,创建附件时,可使用MimeMessage消息对象。使用也很简单,如下:
@GetMapping("/attach") public String attachSend() throws MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("499452441@qq.com"); helper.setTo("499452441@qq.com"); helper.setSubject("主题:来自oKong邮件(带附件)"); helper.setText("(含附件)公众号:一枚趔趄的猿(lqdevOps),作者:oKong"); //添加附件 File qrCode = new File("wxgzh8cm.jpg"); //建议文件带上后缀,可支持在线预览 helper.addAttachment("公众号二维码.jpg", qrCode); mailSender.send(mimeMessage); return "附件邮件发送成功!"; }说明:主要就是利用addAttachment方法进行附件添加,可添加多个。附件名称建议带上后缀。
运行后,即可看见邮件已发送成功:
HTML内容格式以上的格式,基本都是纯文本格式。我们知道,在发送邮件时,一般上可以使用html格式进行发送,可嵌入静态资源,如图片等等。而JavaMailSender中使用也很简单,主要就是利用MimeMessageHelper类的setText(String text, boolean html)方法。
/** * html格式 * @return * @throws MessagingException */ @GetMapping("/html") public String htmlSend() throws MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("499452441@qq.com"); helper.setTo("499452441@qq.com"); helper.setSubject("主题:来自oKong邮件(带附件)"); helper.setText("<html><body><div>(含附件)公众号:一枚趔趄的猿(lqdevOps),作者:oKong</div><div><img src='http://www.likecs.com/cid:winxinQr'></div></body></html>",true); //抄送人 // helper.setCc(""); //密送人 // helper.setBcc(""); //添加附件 File qrCode = new File("wxgzh8cm.jpg"); //建议文件带上后缀,可支持在线预览 helper.addAttachment("公众号二维码.jpg", qrCode); helper.addInline("winxinQr", qrCode); mailSender.send(mimeMessage); return "附件邮件发送成功!"; }注意:这里的cid(Content-ID)是固定写法,冒号后面的值即为需要替换资源的contentId值,就是对应addInline的资源id。
而且注意官网的一句话:Be sure to first add the text and after that the resources. If you are doing it the other way around, it won’t work! 顺序不能颠倒了,需要先设置text,之后添加资源信息!
启动后,一切正常即可看见邮件内容如下:
模版邮件业务开发时,一般上发送的邮件格式都是固定的,而是替换部分参数即可,如用户信息、订单信息等。所以,我们可以利用之前讲解过的模版引擎进行管理各类模版邮件,同时在发送时替换对应的参数值。以下以freemarker模版引擎为例子。
关于模版引擎的使用,可点击查看文章:第十六章:web应用开发
0.引入pom依赖
<!-- 加入模版引擎 freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>1.加入配置信息,指定模版目录、后缀名等:
# 缓存配置 开发阶段应该配置为false 因为经常会改 spring.freemarker.cache=false # 模版后缀名 默认为ftl spring.freemarker.suffix=.ftl # 文件编码 spring.freemarker.charset=UTF-8 # 模版加载的目录 spring.freemarker.template-loader-path=classpath:/templates/2.编写模版文件(放在resources\templates目录下),主要就是替换userName变量: