1. 效果发送效果图

连续发送了四封邮件:普通文本邮件,带附件的邮件,内容包含图片的邮件,发送html邮件。

普通文本邮件截图

带附件的邮件截图

内容包含图片的邮件截图(图片太大,就截取一部分)

发送html邮件截图

2. 邮件开发准备工作

引入pom文件依赖

org.springframework.bootspring-boot-starter-mail

在application.properties 中添加邮箱配置

spring.mail.host=smtp.qq.com

spring.mail.port=587

spring.mail.username=jackdking@foxmail.com

spring.mail.password=邮箱授权码,非邮箱登入密码

from,即为邮件发送者,一般设置在配置文件中

to,邮件接收者,此参数可以为数组,同时发送多人

subject,邮件主题

content,邮件的主体

邮件发送者 from 一般采用固定的形式写到配置文件中。

在qq邮箱中开启收发邮件步骤

进入邮件开启页面

点击开启,并发送短信

确认发送,邮件收发开启

3. springboot引入mail服务

MailServiceImpl类注入邮件API类

/**

* @author jackdking

* @date 2018/5/3 22:07

*/

@Component

public class MailServiceImpl implements IMailService { @Autowired private JavaMailSender mailSender; @Value("${spring.mail.username}") private String mailFrom; ......

4种邮件类型方法

/**

* 发送简单邮件

*

* @param to

* @param subject

* @param content

*/

@Override

public void sendSimpleEmail(String to,String subject,String content) { SimpleMailMessage message = new SimpleMailMessage(); subject="简单文本邮件"; content="你好,我是空白"; to = "jackdking@foxmail.com";//我自己的邮箱 message.setFrom(mailFrom); message.setTo(to); message.setSubject(subject); message.setText(content); mailSender.send(message); } /** * 发送html邮件 * * @param to * @param subject * @param content */ @Override public void sendHtmlMail(String to, String subject, String content) { MimeMessage mimeMessage = mailSender.createMimeMessage(); try { //true表示需要创建一个multipart message subject="发送html邮件"; content="\n" + "

\n" + "

hello world !你好,我是空白 ,发送html邮件!

\n" + "\n" + ""; to = "jackdking@foxmail.com";//我自己的邮箱 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setFrom(mailFrom); helper.setTo(to); helper.setSubject(subject); helper.setText(content,true); mailSender.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } } /** * 发送带附件的邮件 * * @param to * @param subject * @param content * @param filepath */ @Override public void sendFileMail(String to, String subject, String content, String filepath) { MimeMessage mimeMessage = mailSender.createMimeMessage(); subject="发送带附件的邮件"; content="你好,我是空白"; to = "jackdking@foxmail.com";//我自己的邮箱 filepath="D:\\微信图片_20200524230149.jpg"; try { MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setFrom(mailFrom); helper.setTo(to); helper.setSubject(subject); helper.setText(content,true); FileSystemResource file = new FileSystemResource(new File(filepath)); String fileName = filepath.substring(filepath.lastIndexOf(File.separator)); helper.addAttachment(fileName,file); mailSender.send(mimeMessage); }catch (Exception e){ e.printStackTrace(); } } @Override public void sendPictureMail(String to, String subject, String content, String picturepath) { // TODO Auto-generated method stub String Id = "jackdking1314"; content="图片邮件:"; String imgPath = "D:\\微信图片_20200524230149.jpg"; to = "jackdking@foxmail.com";//我自己的邮箱 MimeMessage message = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(mailFrom); helper.setTo(to); helper.setSubject("这是有图片的邮件"); helper.setText(content, true); FileSystemResource res = new FileSystemResource(new File(imgPath)); helper.addInline(Id, res); mailSender.send(message); } catch (MessagingException e) { e.printStackTrace(); } }

4. 启动应用,开始4种邮件发送测试

SpringbootMailApplication应用启动类实现了ApplicationRunner接口,应用启动成功就执行run方法,发送4种邮件。

@SpringBootApplication

public class SpringbootMailApplication implements ApplicationRunner { @Autowired IMailService mailService; public static void main( String[] args ) { SpringApplication.run(SpringbootMailApplication.class, args); } //启动应用后直接发送邮件 @Override public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub mailService.sendSimpleEmail(null, null, null); mailService.sendHtmlMail(null, null, null); mailService.sendFileMail(null, null, null,null); mailService.sendPictureMail(null, null, null,null); } }

应用启动成功,并成功发送了4封邮件

转载这篇文章需要标注作者和出处:空白-bittechblog

完整的demo项目,请关注公众号“前沿科技bot“并发送"邮件系统"获取。

邮件系统html源码,SpringBoot系列—简单的邮件系统(附完整项目代码)相关推荐

  1. 图书馆管理系统代码源码(php+css+js+mysql) 完整的代码源码

    图书馆管理系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构. 优化过的界面,拥有管理员和普通用户,普通用户可注册登录,管理员可登录,功能齐全. 管理员可管理普通用户 ...

  2. 会议室预定系统代码源码(php+css+js+mysql) 完整的代码源码

    会议室预定系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构. 优化过的界面,由管理员进行预定会议室操作. 推荐使用phpstudy+ navicat搭建和管理项目! ...

  3. SpringBoot源码学习系列之异常处理自动配置

    SpringBoot源码学习系列之异常处理自动配置 1.源码学习 先给个SpringBoot中的异常例子,假如访问一个错误链接,让其返回404页面 在浏览器访问: 而在其它的客户端软件,比如postm ...

  4. spring源码解读系列(八):观察者模式--spring监听器详解

    一.前言 在前面的文章spring源码解读系列(七)中,我们继续剖析了spring的核心refresh()方法中的registerBeanPostProcessors(beanFactory)(完成B ...

  5. 一起谈.NET技术,.NET Framework源码研究系列之---万法归宗Object

    经过前面三篇关于.NET Framework源码研究系列的随笔,相信大家都发现其实.NET Framework的实现其实并不复杂,也许跟我们自己做的项目开发差不多.本人也是这样的看法.不过,经过仔细深 ...

  6. 【Dubbo源码阅读系列】之远程服务调用(上)

    今天打算来讲一讲 Dubbo 服务远程调用.笔者在开始看 Dubbo 远程服务相关源码的时候,看的有点迷糊.后来慢慢明白 Dubbo 远程服务的调用的本质就是动态代理模式的一种实现.本地消费者无须知道 ...

  7. Alamofire源码解读系列(九)之响应封装(Response)

    本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...

  8. TiDB 源码阅读系列文章(六)Select 语句概览

    在先前的 TiDB 源码阅读系列文章(四) 中,我们介绍了 Insert 语句,想必大家已经了解了 TiDB 是如何写入数据,本篇文章介绍一下 Select 语句是如何执行.相比 Insert,Sel ...

  9. TiDB 源码阅读系列文章(十九)tikv-client(下)

    上篇文章 中,我们介绍了数据读写过程中 tikv-client 需要解决的几个具体问题,本文将继续介绍 tikv-client 里的两个主要的模块--负责处理分布式计算的 copIterator 和执 ...

  10. vue修改节点class_Vue2.0 源码解读系列 来自 Vue 的神秘礼盒

    鄢栋,微医云服务团队前端工程师.有志成为一名全栈开发工程师甚至架构师,路漫漫,吾求索.生活中通过健身释放压力,思考问题. 目前 Vue3.0 打的很火热,都已经出了很多 Vue3.0 源码解析系列的博 ...

最新文章

  1. [洛谷1383]高级打字机 题解
  2. Pinterest 谈实战经验:如何在两年内实现零到数百亿的月访问
  3. XenStore: 使用,结构和原理
  4. python+selenium自动登录qq空间并下载相册
  5. ansys matlab 调用,matlab 调用ansys (转载)
  6. Java Web项目 配置 ueditor心得
  7. 计算机通讯技术核心期刊有哪些,通信类中文核心期刊有哪些比较好投
  8. STRUTS1框架简介
  9. 江苏2021高考成绩查询全省排名,2021江苏省地区高考成绩排名查询,江苏省高考各高中成绩喜报榜单...
  10. main函数写法总结
  11. 使用docker运行mysql:5.7
  12. 上传文件nginx限制大小解决
  13. 损坏的映像 错误0xc0000020
  14. sql中向下取整怎么取_Sql Server 里的向上取整、向下取整、四舍五入取整的实例!...
  15. IBM X3400 m3 EFI platform initialization
  16. 再见了,Teamviewer!
  17. 破解word文件密码
  18. libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by erlang-22.0.7-1.el7.x86_64
  19. Xamarin.Forms中实现选择本地图片,并进行剪裁。(Android端)
  20. 【​观察】从技术提升社会效率的价值观 看BoCloud博云的初心与使命

热门文章

  1. 如何区分网线是几类的_如何区分家里的网线是超五类还是超六类的呢?
  2. 广告/友情链接/站内信/会员地址/会员银行卡/我的收藏/评论/搜索/用户标签/用户抬头号/签到/我的足迹/我的优惠卷
  3. diskmark使用教程
  4. Ubuntu下snap挂代理下载加速方法
  5. 银行客户用户画像_大数据精准营销用户画像是核心-金融业大数据用户画像实践...
  6. 《非暴力沟通》-- 马歇尔.卢森堡
  7. php微信公众号发送邮件,GitHub - DongDavid/notify: 消息发送组件-邮件、微信公众号、企业微信、小程序...
  8. 鼠标不能动怎么选择计算机,鼠标动不了怎么办 电脑鼠标不动了按什么键
  9. 将国家名和缩写的字典存入json文件
  10. 从哪里寻找游戏工具集(Game dev toolset)开发的资料?