`

Spring Boot发送邮件详解

阅读更多

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如何在Spring Boot中使用JavaMailSender发送邮件。

一、引入依赖

 

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

 

二、application.properties配置

 

##端口号
server.port=8888

##根据自己的情况填写
##邮箱服务器地址
##QQ smtp.qq.com
##sina smtp.sina.cn
##aliyun smtp.aliyun.com
##163 smtp.163.com
spring.mail.host=smtp.qq.com
##邮箱用户名
spring.mail.username=949118693@qq.com
##邮箱密码(注意:QQ邮箱应该使用授权码)
spring.mail.password=****************
##编码格式
spring.mail.default-encoding=UTF-8

##发送邮件地址
mail.fromMail.sender=949118693@qq.com
##接收邮件地址
mail.fromMail.receiver=1415954494@qq.com

 

三、邮件发送控制器

package com.xieke.test.demo;
import java.io.File;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 邮件发送控制器
 * 
 * @author 邪客
 * 
 */
@RestController
public class MailController {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Value("${mail.fromMail.sender}")
	private String sender;// 发送者

    @Value("${mail.fromMail.receiver}")
	private String receiver;// 接受者

    @Autowired
    private JavaMailSender javaMailSender;

	/**
	 * @Description http://localhost:8888/sendMail
	 * @method 发送文本邮件
	 * @return
	 */
    @RequestMapping("/sendMail")
    public String sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(sender);
        message.setTo(receiver);
		message.setSubject("邪客发送文本邮件测试");// 标题
		message.setText("世界,你好!--->文本邮件");// 内容
        try {
            javaMailSender.send(message);
			logger.info("文本邮件发送成功!");
			return "success";
        } catch (Exception e) {
			logger.error("文本邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendHtmlMail
	 * @method 发送html邮件
	 * @return
	 */
    @RequestMapping("/sendHtmlMail")
    public String testHtmlMail() {
		String content = "<html><body><h3>hello world ! --->Html邮件</h3></body></html>";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送Html邮件测试");
            helper.setText(content, true);

            javaMailSender.send(message);
			logger.info("Html邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("Html邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendFilesMail
	 * @method 发送附件邮件
	 * @return
	 */
    @RequestMapping("/sendFilesMail")
    public String sendFilesMail() {
		String filePath = "F:\\select_from_user.sql";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送附件邮件测试");
			helper.setText("一封带附件的邮件", true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);

            javaMailSender.send(message);
			logger.info("附件邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("附件邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendInlineResourceMail
	 * @method 发送图片邮件
	 * @return
	 */
    @RequestMapping("/sendInlineResourceMail")
    public String sendInlineResourceMail() {
		String id = "xieke90";
		// cid:内嵌资源
		String content = "<html><body>带有图片的邮件:<img src=\'cid:" + id + "\'></body></html>";
		String imgPath = "F:\\spring-cloud.png";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送图片邮件测试");
            helper.setText(content, true);

            FileSystemResource res = new FileSystemResource(new File(imgPath));
			helper.addInline(id, res);

            javaMailSender.send(message);
			logger.info("图片邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("图片邮件发送异常!", e);
			return "failure";
        }

    }

}

 

四、分别测试文本、Html、附件、图片邮件发送

<1>、访问http://localhost:8888/sendMail,测试结果如下:



 <2>、访问http://localhost:8888/sendHtmlMail,测试结果如下:



 <3>、访问http://localhost:8888/sendFilesMail,测试结果如下:



  <4>、访问http://localhost:8888/sendInlineResourceMail,测试结果如下:



 

代码已上传至码云:https://gitee.com/xieke90/spring_boot_demo (springboot-mail-demo)

 

转载请注明出处: http://xieke90.iteye.com/blog/2428892

 

  • 大小: 8.6 KB
  • 大小: 11 KB
  • 大小: 17 KB
  • 大小: 71.4 KB
1
0
分享到:
评论

相关推荐

    Spring Boot和Hazelcast使用详解

    Spring Boot和Hazelcast使用详解 Spring Boot和Hazelcast使用详解是指如何将Hazelcast集成到Spring Boot项目中,以提高应用程序的性能。Hazelcast是一个内存分布式计算平台,用于管理数据并并行执行应用程序。它...

    2023最新《Spring Boot基础教程》

    Spring Boot 2.x基础教程:配置文件详解 Spring Boot 2.x基础教程:2.4版本前后的多环境配置变化 Spring Boot 2.x基础教程:2.4版本前后的分组配置变化 Spring Boot 2.x基础教程:配置元数据的应用 Spring Boot 2.x...

    Spring Boot使用MongoDB详解

    ### Spring Boot 使用 MongoDB 详解 #### 一、前言 随着大数据时代的发展,NoSQL 数据库因其灵活性和高性能成为开发者的新宠。MongoDB 作为 NoSQL 数据库中的佼佼者,凭借其面向文档的存储方式、高效查询性能及...

    《Spring Boot企业级开发教程》配套资源.zip

    《Spring Boot企业级开发教程》配套资源.zip是一个包含多种学习材料的压缩文件,专为学习和研究Spring Boot的企业级开发而设计。这个资源包旨在帮助用户深入理解和掌握Spring Boot框架,以及与其相关的Java和后端...

    spring boot配置文件参数详解

    spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,

    Spring Boot核心技术-笔记-pdf版.pdf

    **Spring Boot核心技术详解** Spring Boot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的初始搭建以及开发过程。它集成了大量的常用组件,如数据源、定时任务、缓存、邮件服务等,无需繁琐配置...

    Spring Boot开发案例详解.pdf

    ### Spring Boot开发案例详解知识点概览 #### 一、Spring Boot简介及优势 - **快速开发**:Spring Boot 自带的“约定优于配置”理念极大简化了开发过程。 - **易于部署**:支持将应用程序打包成独立的 JAR 或 WAR ...

    Spring Boot Mybatis使用详解含示例(值得珍藏)

    【Spring Boot整合MyBatis详解】 在现代Java开发中,Spring Boot因其简洁的配置和强大的功能而成为首选的框架。而MyBatis作为一款优秀的持久层框架,与Spring Boot结合可以构建高效、灵活的数据库访问层。本文将...

    spring boot、spring cloud、spring boot Alibaba以及配套组件版本关系

    ### Spring Boot、Spring Cloud、Spring Boot Alibaba及其配套组件版本关系详解 #### 一、引言 随着微服务架构的流行,Spring Boot、Spring Cloud、Spring Boot Alibaba等技术栈成为构建现代分布式系统的基石。然而...

    Spring Boot如何使用HikariCP连接池详解

    Spring Boot使用HikariCP连接池的详细指南 在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。...

    Spring cloud和Spring boot介绍

    - **自动配置**:Spring Boot 自动配置了很多常用的组件和技术栈,如数据库连接、安全框架、邮件发送等,大大降低了开发者的工作量。 - **组件支持广泛**:对于开发者希望集成到应用中的几乎所有常用框架和技术栈,...

    详解spring boot 使用application.properties 进行外部配置

    使用application.properties 进行外部配置的 Spring Boot 知识点详解 Spring Boot 框架提供了多种方式来进行外部配置,今天我们将详细讲解使用 application.properties 文件来进行外部配置的方法。application....

    Spring-Boot-Demo

    《Spring Boot整合Mybatis与Druid数据库连接池的实践详解》 在当今的Java开发领域,Spring Boot以其简洁、高效的特点成为了主流的框架选择。它极大地简化了项目的配置和启动流程,使得开发者能够更加专注于业务逻辑...

    spring-boot-邮件发送

    ### Spring Boot 邮件发送知识点详解 #### 一、环境搭建 为了使用Spring Boot进行邮件发送,首先需要搭建好相应的开发环境。 1. **开通SMTP邮件服务:** - 对于使用QQ邮箱作为SMTP服务器的情况,需要在QQ邮箱...

    spring boot入门的第一个项目

    **Spring Boot 入门项目详解** Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,旨在简化Spring应用的初始搭建以及开发过程。它预设了许多默认配置,使得开发者能够快速构建可运行的项目,而无需在配置上花费...

    spring boot入门教程

    ### Spring Boot 入门教程详解 #### Spring Boot 框架概述 Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式(习惯优于配置)来简化整个 ...

    从零开始学Spring Boot

    1.37 Spring Boot的启动器Starter详解 1.38 Spring Boot集成Redis实现缓存机制 1.39 Spring Boot Cache理论篇 1.40 Spring Boot集成EHCache实现缓存机制 1.41 Spring Boot分布式Session状态保存Redis 1.42 Spring ...

    Spring Boot + Vue3 完整开发全栈项目附资料.zip

    《Spring Boot + Vue3 全栈开发详解及实践指南》 在现代Web开发领域,Spring Boot和Vue3已经成为构建高效、可扩展应用的热门选择。本项目实战将深入讲解如何结合这两个强大的技术栈,实现一个全栈应用。下面,我们...

Global site tag (gtag.js) - Google Analytics