文章字数:298,阅读全文大约需要1分钟
Spring中默认有starter实现类Mail
依赖
1 2 3 4 5 6 7 8
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
|
配置文件
1 2 3 4 5 6 7 8 9
| # JavaMailSender 邮件发送的配置 spring.mail.host=smtp.qq.com spring.mail.username=用户qq邮箱 #QQ邮箱的授权码 spring.mail.password=密码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.default-encoding=UTF-8
|
简单邮件
1 2 3 4 5 6 7 8 9 10 11 12
| public void sendSimpleMail(){ try{ SimpleMaileMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage .setFrom("sendFrom@qq.com"); simpleMailMessage .setTo("sendTo@qq.com"); simpleMailMessage.setSubject("主题"); simpleMailMessage.setText("内容"); javaMailSender.send(simpleMailMessage); }catch(Exception e){ logger.error("发送失败",e.getMessage()); } }
|
自定义发件人名称
1 2 3 4 5 6 7 8
| String nick = ""; try { nick = javax.mail.internet.MimeUtility.encodeText("张三"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } mimeMsg.setFrom(new InternetAddress("sendFrom@qq.com", nick));
|
html格式邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void sendHTMLMail(MailBean mailBean) { MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom(MAIL_SENDER); mimeMessageHelper.setTo(mailBean.getRecipient()); mimeMessageHelper.setSubject(mailBean.getSubject()); mimeMessageHelper.setText("<h1>hello</h1>", true); javaMailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); } }
|
带附件格式的邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public void sendAttachmentMail(MailBean mailBean) { MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom(MAIL_SENDER); mimeMessageHelper.setTo(mailBean.getRecipient()); mimeMessageHelper.setSubject(mailBean.getSubject()); mimeMessageHelper.setText(mailBean.getContent()); FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.png")); mimeMessageHelper.addAttachment("mail.png", file);
javaMailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); } }
|
发送带静态资源的邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public void sendInlineMail(MailBean mailBean) { MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom(MAIL_SENDER); mimeMessageHelper.setTo(mailBean.getRecipient()); mimeMessageHelper.setSubject(mailBean.getSubject()); mimeMessageHelper.setText("<html><body>带静态资源的邮件内容,这个一张IDEA配置的照片:<img src='cid:picture' /></body></html>", true); FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.png")); mimeMessageHelper.addInline("picture", file);
javaMailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); } }
|
基于Freemarker的模板邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public void sendTemplateMail(MailBean mailBean) { MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom(MAIL_SENDER); mimeMessageHelper.setTo(mailBean.getRecipient()); mimeMessageHelper.setSubject(mailBean.getSubject());
Map<String, Object> model = new HashMap<String, Object>(); model.put("content", mailBean.getContent()); model.put("title", "标题Mail中使用了FreeMarker"); Template template = configuration.getTemplate("mail.ftl"); String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model); mimeMessageHelper.setText(text, true);
javaMailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); }
}
|
动态添加邮箱配置信息
和之前使用接口javaMailSender
不同,这次使用的是接口的实现类。
使用JavaMailSenderImpl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void sendSimpleMail() throws Exception { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); String users[] = {"xxxxx@qq.com","xxxxx@126.com"}; mailSender.setHost("smtp.126.com"); mailSender.setPassword("xxxxx"); mailSender.setPort(25); mailSender.setProtocol("smtp"); mailSender.setUsername("xxxxx"); SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("xxxxxxx"); message.setTo(users); message.setSubject("羽毛球比赛"); message.setText("报名参加羽毛球赛"); mailSender.send(message); }
|