SpringBoot系列—简单的邮件系统

HelloWorld2016425 2020-05-30 原文

1. 效果发送效果图

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

alt

普通文本邮件截图

alt

带附件的邮件截图

alt

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

alt

发送html邮件截图

alt

2. 邮件开发准备工作

  • 引入pom文件依赖
    <!-- 邮件 -->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
  • 在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邮箱中开启收发邮件步骤

    • 进入邮件开启页面 altaltalt

    • 点击开启,并发送短信 alt

    • 确认发送,邮件收发开启 altalt

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="<html>\n" +
                    "<body>\n" +
                    "    <h3>hello world !你好,我是空白 ,发送html邮件!</h3>\n" +
                    "</body>\n" +
                    "</html>";

            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="<html><body>图片邮件:<img src=\'cid:" + Id + "\' ></body></html>";
        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封邮件

alt

 


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

 

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

 

alt

Hi,admin 如果你想 注销 ?                              

版权声明:本文为HelloWorld2016425原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/HelloWorld2016425/p/12995289.html

SpringBoot系列—简单的邮件系统的更多相关文章

  1. SpringBoot后端系统系统的基础架构

    前言 前段时间完成了毕业设计课题——《基于Spring Boot + Vue的直播后台管理系统》,项目名为LB […]...

  2. 玩转 SpringBoot 2 快速搭建 | RESTful Api 篇

    玩转 SpringBoot 2 快速搭建 | RESTful Api 篇 概述 RESTful 是一种架构风格 […]...

  3. 5分钟理解 SpringBoot 响应式的核心-Reactor

    目录 一、前言 二、 Mono 与 Flux 构造器 三、 流计算 1. 缓冲 2. 过滤/提取 3. 转换 […]...

  4. springboot + redis(单机版)

      本次和大家分享的是在springboot集成使用redis,这里使用的是redis的jedis客户端(这里 […]...

  5. 关于中台

    关于中台 2018-12-23 17:42 by 只喝牛奶的杀手, … 阅读, … 评 […]...

  6. springBoot系列教程02:mongodb的集成及使用

    1.安装mongodb mongdb的安装很简单,只需要下载解压后运行mongod就好了 wget https […]...

  7. SpringBoot 整合 WebSocket

    SpringBoot 整合 WebSocket(topic广播) 1、什么是WebSocket   WebSo […]...

  8. 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限

    开发环境搭建参见《【原】无脑操作:IDEA + maven + SpringBoot + JPA + Thym […]...

随机推荐

  1. Android Mms 接收信息流程

    信息的接收工作是由底层来完成的,当有一个 新的信息时底层完成接收后会以Intent的方式来通知上层应用,信息的 […]...

  2. NOIP2011提高组day1解题报告【2017.3.24更新】

    p { text-indent: 25px } h2 { color: rgba(238, 62, 128, […]...

  3. EasyNVR网页H5无插件播放摄像机视频功能二次开发之直播通道接口保活示例代码

    背景需求 随着雪亮工程、明厨亮灶、手机看店、智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网、微信直播,我 […]...

  4. 用mdadm构建软RAID(基础篇)

    用mdadm构建软RAID(基础篇) 基于网上的一些资料,整理了一下,其中不妥之处欢迎指正,在此希望能抛砖引玉 […]...

  5. 【二十二】mysqli事务处理

    事务处理 事务基本原理 如果不开启事务,执行一条sql,马上会持久化数据。可见:默认的mysql对sql语句的 […]...

  6. VMware_win10能ping通虚拟机ip,虚拟机ping不通win10ip的解决方法

    一、虚拟机设置为桥接模式 二、修改虚拟机linux的ip 查看win10的ip和网关 使用ifconfig查看 […]...

  7. 据磁力链获得BT种子

        最近研究了一下磁力链magnet和BT种子torrent文件之间的相互转换。其实通过torrent文件 […]...

  8. 如何快速的在线传输视频、图纸等超大文件?

    如果你是设计师,需要向客户发送设计图纸; 如果你是业务员,需要向国外客户发送视频文件; 如果你是工程师,需要向 […]...

展开目录

目录导航