
使用spring maill发送邮件
发布日期:2021-05-08 03:54:59
浏览次数:22
分类:精选文章
本文共 9745 字,大约阅读时间需要 32 分钟。
使用spring maill发送邮件
三种不同内容及附件
- 发送简易邮件
- 发送Html格式的可带附件的邮件
- 发送基于thymeleaf模板引擎的可带附件的邮件
三种方式基本配置
1、在pom文件中添加:
org.springframework.boot spring-boot-starter-mail
2、配置文件:
application.properties:#thymeleafspring.thymeleaf.mode=HTMLspring.thymeleaf.cache=falsespring.thymeleaf.prefix=classpath:/templates/#mailspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=truespring.mail.default-encoding=UTF-8#使用qq发送邮件spring.profiles.active=qq
application-qq.properties:
# JavaMailSender 邮件发送的配置spring.mail.host=smtp.qq.com#QQ邮箱spring.mail.username=1043437643@qq.com#QQ邮箱的授权码spring.mail.password=dkflmkddyzcybdda
application-163.properties:(选配)
spring.mail.host=smtp.163.comspring.mail.username=xxx@163.com#163邮箱密码spring.mail.password=xxxxxx
3、创建Email实体类EmailBo:
private Integer id;/** 邮件主题 */private String subject;/** 邮件显示内容 */private String content;/** 发送人 */private String sender;/** 收件人 */private String[] recipient;/** 抄送人 */private String[] cc;/** 内容是否是html */private boolean isHtml;/** 附件列表 一个map存储一个附件的名称和路径 */private List
1、发送简易邮件
编写一个发送邮件的工具类EmailUtils添加下面内容:public class EmailUtils { private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class); /** * 发送简易邮件 * @param emailBo * @return */ public static boolean sendSimpleMail(JavaMailSender javaMailSender,EmailBo emailBo) { boolean flag = true; try { //获取邮件对象 SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); //发件人 simpleMailMessage.setFrom(emailBo.getSender()); //收件人 simpleMailMessage.setTo(emailBo.getRecipient()); //抄送人 simpleMailMessage.setCc(emailBo.getCc()); //邮件主题 simpleMailMessage.setSubject(emailBo.getSubject()); //邮件内容 simpleMailMessage.setText(emailBo.getContent()); //发送邮件 javaMailSender.send(simpleMailMessage); } catch (MailException e) { logger.error("邮件发送失败:{}", e.getMessage()); flag = false; } return flag; }}
调用EmailUtils工具类发送邮件:
@RestController@RequestMapping("email")public class EmailController { private static final Logger logger = LoggerFactory.getLogger(EmailController.class); //读取环境配置 @Autowired private Environment env; //spring邮件发送接口 @Autowired private JavaMailSender javaMailSender; @RequestMapping("sendEmail") public Boolean sendEmail(){ EmailBo emailBo = new EmailBo(); //设置发件人从配置文件读取 emailBo.setSender(env.getProperty("spring.mail.username")); //设置收件人 emailBo.setRecipient(new String[]{ "321771738@qq.com"}); //设置抄送人 emailBo.setCc(new String[]{ "1787470815@qq.com"}); //设置主题 emailBo.setSubject("主题"); //设置内容 emailBo.setContent("内容"); boolean isSend = EmailUtils.sendSimpleMail(javaMailSender,emailBo); logger.info("邮件发送:{}", isSend); return isSend; }}
2、发送Html格式的可带附件的邮件(可多个附件)
新建一个常量类EmailConf保存附件的名称和路径:public class EmailConf { //文件一 public static final String FILE_NAME = "test1.docx"; public static final String FILE_PATH ="C:\\Users\\86177\\Desktop\\test1.docx.docx"; //文件二 public static final String FILE_NAME2 = "test2.docx"; public static final String FILE_PATH2 = "C:\\Users\\86177\\Desktop\\test2.docx";}
编写一个发送邮件的工具类EmailUtils添加下面内容:
(若工具类已存在可在工具类EmailUtils中新添加下面方法)public class EmailUtils { private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class); /** * 发送html格式的可带附件的邮件 * 可多个附件 * @param emailBo */ public static boolean sendHtmlMailWithAttachment(JavaMailSender javaMailSender,EmailBo emailBo) throws MessagingException { boolean flag = true; try { //设置邮件发送的基本配置(发送人,标题,内容。。。) MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true,"UTF-8"); mimeMessageHelper.setSubject(emailBo.getSubject()); mimeMessageHelper.setText(emailBo.getContent(), emailBo.isHtml()); mimeMessageHelper.setFrom(emailBo.getSender()); mimeMessageHelper.setTo(emailBo.getRecipient()); //抄送人参数不为null时设置抄送人 if (emailBo.getCc() != null) { mimeMessageHelper.setCc(emailBo.getCc()); } //附件参数不为空时,循环获取附件 if (emailBo.getAttachFiles() != null) { FileSystemResource file = null; for (Mapattachment : emailBo.getAttachFiles()) { //获取文件路径(与调用工具方法时的参数TreeMap对应) String filePath = attachment.get("filePath"); //获取文件名称(与调用工具方法时的参数TreeMap对应) String fileName = attachment.get("fileName"); //获取文件 file = new FileSystemResource(filePath); //将文件添加至附件列表 /*mimeMessageHelper.addAttachment(fileName, file);*/ try { //将文件添加至附件列表--文件名为中文时需采用UTF-8方式防止乱码 //此处需捕获或抛出异常 mimeMessageHelper.addAttachment(MimeUtility.encodeWord(fileName,"UTF-8","B"), file); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } //发送邮件 javaMailSender.send(mimeMessage); } catch (MessagingException e) { logger.error("邮件发送失败:{}", e.getMessage()); flag = false; } return flag; }}
调用EmailUtils工具类发送邮件:
@RestController@RequestMapping("email")public class EmailController { private static final Logger logger = LoggerFactory.getLogger(EmailController.class); //读取环境配置 @Autowired private Environment env; //spring邮件发送接口 @Autowired private JavaMailSender javaMailSender; @RequestMapping("sendHtmlEmail") public Boolean sendHtmlEmail(){ EmailBo emailBo = new EmailBo(); //设置发件人从配置文件读取 emailBo.setSender(env.getProperty("spring.mail.username")); //设置收件人 emailBo.setRecipient(new String[]{ "321771738@qq.com"}); //设置抄送人 emailBo.setCc(new String[]{ "1787470815@qq.com"}); //设置主题 emailBo.setSubject("HTML格式的测试邮件"); //设置内容 emailBo.setContent("百度一下,你就知道
"); //设置是否为Html格式 emailBo.setHtml(true); //设置附件集合(可采用List
3、发送邮件内容基于thymeleaf模板引擎的可带附件的邮件
pom添加依赖jar包:org.springframework.boot spring-boot-starter-thymeleaf
在resources/templates目录下新建email.html:
Title 您好,这是验证邮件,请点击下面的链接完成验证,激活账号
调用EmailUtils工具类发送邮件:
基于thymeleaf模板引擎发送和前面Html格式的发送其实差不多,只是html格式的邮件是把邮件内容用html代码输入,而thymeleaf模板引擎是获取上下文,设置模板的参数、把解析模板的值作为邮件内容。所以可以复用发送Html格式的可带附件的邮件的util工具类方法 //基于thymeleaf模板引擎发送邮件所需thymeleaf工具类包@Autowiredprivate TemplateEngine templateEngine;@RestController@RequestMapping("email")public class EmailController { private static final Logger logger = LoggerFactory.getLogger(EmailController.class); //读取环境配置 @Autowired private Environment env; //spring邮件发送接口 @Autowired private JavaMailSender javaMailSender; //基于thymeleaf模板引擎发送邮件所需thymeleaf工具类包 @Autowired private TemplateEngine templateEngine; @RequestMapping("sendHtmlEmail") public Boolean sendHtmlEmail(){ //替换模板中的 "@{${href}}" 变量的值 //Context导包导 import org.thymeleaf.context.Context; Context context = new Context(); context.setVariable("href", "http://www.baidu.com"); //解析模板 作为邮件内容 //templateEngine 需注入 String content = templateEngine.process("email", context); EmailBo emailBo = new EmailBo(); //设置发件人从配置文件读取 emailBo.setSender(env.getProperty("spring.mail.username")); //设置收件人 emailBo.setRecipient(new String[]{ "321771738@qq.com"}); //设置抄送人 emailBo.setCc(new String[]{ "1787470815@qq.com"}); //设置主题 emailBo.setSubject("HTML格式的测试邮件"); //设置内容 emailBo.setContent(content); //设置是否为Html格式 emailBo.setHtml(true); //设置附件集合(可采用List方式设置多个) List > maps = new ArrayList<>(); Map map1 = new TreeMap<>(); map1.put("filePath",EmailConf.FILE_PATH); map1.put("fileName",EmailConf.FILE_NAME); maps.add(map1); Map map2 = new TreeMap<>(); map2.put("filePath",EmailConf.FILE_PATH2); map2.put("fileName",EmailConf.FILE_NAME2); maps.add(map2); //设置附件集合(可采用List 方式设置多个) emailBo.setAttachFiles(maps); boolean isSend = false; try { //调用工具类 //需捕获异常 isSend = EmailUtils.sendHtmlMailWithAttachment(javaMailSender,emailBo); } catch (MessagingException e) { e.printStackTrace(); } logger.info("邮件发送:{}", isSend); return isSend; }}
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月21日 06时08分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ButterKnife使用问题
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05
ORACLE 客户端工具
2019-03-05
使用第三方sdk,微信wechat扫码登录
2019-03-05
基于LabVIEW的入门指南
2019-03-05
“/”应用程序中的服务器错误。
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
水调歌头·1024
2019-03-05
C++ 函数重载
2019-03-05
Nginx的Gzip功能
2019-03-05
Azure Storage 系列(四)在.Net 上使用Table Storage
2019-03-05
abstract关键字的使用
2019-03-05
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2019-03-05
解决Spirng注入时名称下的红色波浪线
2019-03-05
使用mybatis-generator生成底层
2019-03-05
Android APK 重签名
2019-03-05
Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息
2019-03-05