这篇文章介绍springboot的邮件发送。

由于很简单就没有分出server和imp之类,只是在controller简单写个方法进行测试。

首先pom文件加入spring-boot-starter-mail,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.dalaoyang</groupId>
<artifactId>springboot_mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springboot_mail</name>
<description>springboot_mail</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

接下来是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.aliyun.com
##邮箱用户名
spring.mail.username=dalaoyang@aliyun.com
##邮箱密码(注意:qq邮箱应该使用独立密码,去qq邮箱设置里面获取)
spring.mail.password=******
##编码格式
spring.mail.default-encoding=UTF-8 ##发送邮件地址
mail.fromMail.sender=dalaoyang@aliyun.com
##接收邮件地址
mail.fromMail.receiver=yangyang@dalaoyang.cn

然后先展示一下controller的完整代码:

package com.dalaoyang.controller;

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; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File; /**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.controller
* @email yangyang@dalaoyang.cn
* @date 2018/4/10
*/
@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
* @author dalaoyang
* @email 397600342@qq.com
* @method 发送文本邮件
* @date
* @param
* @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("简单邮件已经发送。");
} catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
return "success";
} /* *
* @Description http://localhost:8888/sendHtmlMail
* @author dalaoyang
* @email 397600342@qq.com
* @method 发送html邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendHtmlMail")
public String testHtmlMail() {
String content="<html>\n" +
"<body>\n" +
" <h3>hello world ! 这是一封Html邮件!</h3>\n" +
"</body>\n" +
"</html>";
MimeMessage message = javaMailSender.createMimeMessage(); try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(sender);
helper.setTo(receiver);
helper.setSubject("html mail");
helper.setText(content, true); javaMailSender.send(message);
logger.info("html邮件发送成功");
} catch (MessagingException e) {
logger.error("发送html邮件时发生异常!", e);
}
return "success";
} /* *
* @Description http://localhost:8888/sendFilesMail
* @author dalaoyang
* @email 397600342@qq.com
* @method 发送附件邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendFilesMail")
public String sendFilesMail() {
String filePath="/Users/dalaoyang/Downloads/article_tag.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("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
return "success";
} /* *
* @Description http://localhost:8888/sendInlineResourceMail
* @author dalaoyang
* @email 397600342@qq.com
* @method 发送图片邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendInlineResourceMail")
public String sendInlineResourceMail() {
String Id = "dalaoyang12138";
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + Id + "\' ></body></html>";
String imgPath = "/Users/dalaoyang/Downloads/dalaoyang.jpeg";
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("嵌入静态资源的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送嵌入静态资源的邮件时发生异常!", e);
}
return "success";
}
}

然后一点一点来,本文分4种情况:

1.发送简单的文本邮件

 /* *
* @Description http://localhost:8888/sendMail
* @author dalaoyang
* @email yangyang@dalaoyang.cn
* @method 发送文本邮件
* @date
* @param
* @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("简单邮件已经发送。");
} catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
return "success";
}

访问http://localhost:8888/sendMail,可以看到页面上显示success,在去看邮箱可以看到如下图,证明发送成功

2.发送html邮件

/* *
* @Description http://localhost:8888/sendHtmlMail
* @author dalaoyang
* @email yangyang@dalaoyang.cn
* @method 发送html邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendHtmlMail")
public String testHtmlMail() {
String content="<html>\n" +
"<body>\n" +
" <h3>hello world ! 这是一封Html邮件!</h3>\n" +
"</body>\n" +
"</html>";
MimeMessage message = javaMailSender.createMimeMessage(); try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(sender);
helper.setTo(receiver);
helper.setSubject("html mail");
helper.setText(content, true); javaMailSender.send(message);
logger.info("html邮件发送成功");
} catch (MessagingException e) {
logger.error("发送html邮件时发生异常!", e);
}
return "success";
}

访问http://localhost:8888/sendHtmlMail,可以看到页面上显示success,在去看邮箱可以看到如下图,证明发送成功

3.发送附件邮件

/* *
* @Description http://localhost:8888/sendFilesMail
* @author dalaoyang
* @email yangyang@dalaoyang.cn
* @method 发送附件邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendFilesMail")
public String sendFilesMail() {
String filePath="/Users/dalaoyang/Downloads/article_tag.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("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
return "success";
}

访问http://localhost:8888/sendFilesMail,可以看到页面上显示success,在去看邮箱可以看到如下图,证明发送成功

4.发送图片邮件

 /* *
* @Description http://localhost:8888/sendInlineResourceMail
* @author dalaoyang
* @email yangyang@dalaoyang.cn
* @method 发送图片邮件
* @date
* @param
* @return
*/
@RequestMapping("/sendInlineResourceMail")
public String sendInlineResourceMail() {
String Id = "dalaoyang12138";
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + Id + "\' ></body></html>";
String imgPath = "/Users/dalaoyang/Downloads/dalaoyang.jpeg";
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("嵌入静态资源的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送嵌入静态资源的邮件时发生异常!", e);
}
return "success";
}

访问http://localhost:8888/sendInlineResourceMail,可以看到页面上显示success,在去看邮箱可以看到如下图,证明发送成功

SpringBoot邮件发送的更多相关文章

  1. Springboot邮件发送思路分析

    毕业设计里需要邮件发送,所以学习,总的来讲,我考虑以下几点, 代码量少,代码简单.配置少,一看就懂,使用 JavaMail 太麻烦了. 异步执行,添加员工之后会发送入职邮件, 多线程处理,设计里有一个 ...

  2. springboot邮件发送与接收读取

    发送邮件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  3. SpringBoot邮件发送功能

    快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.sp ...

  4. SpringBoot项目实现文件上传和邮件发送

    前言 本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能. SpringBoot 文件上传 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要 ...

  5. 补习系列(12)-springboot 与邮件发送

    目录 一.邮件协议 关于数据传输 二.SpringBoot 与邮件 A. 添加依赖 B. 配置文件 C. 发送文本邮件 D.发送附件 E. 发送Html邮件 三.CID与图片 参考文档 一.邮件协议 ...

  6. springboot添加邮件发送及压缩功能

    springboot添加邮件发送及文件压缩功能 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190233.html 先来一段诗 ``` 就这样吧 忍受折磨 ...

  7. IntelliJ IDEA 2017版 spring-boot 2.0.5 邮件发送简单实例 (三)

    一.搭建SpringBoot项目 详见此文:https://www.cnblogs.com/liuyangfirst/p/8298588.html 注意: 需要添加mail依赖的包,同时还添加了lom ...

  8. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (二)

    第二部分 邮件发送历史   一.第一封邮件   1.1969年10月,世界上的第一封电子邮件    1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短 ...

  9. springboot利用mail配置包,实现邮件发送

    了解邮件发送与接收的过程: A->S1->S2->B 1.计算机A通过SMTP协议将邮件发送到服务器S1上: 2.服务器S1再发送到服务器S2: 3.计算机B通过POP3协议接收服务 ...

随机推荐

  1. ORM 对象关系映射

    ORM (object relation mapping) 就是将对象数据转换为sql语句并执行 对象关系映射框架 orm 需要做的事情 1 生成创建表的语句 2 插入数据的语句 3 删除数据的语句 ...

  2. 微信小程序简单介绍 一

    一 组件及api网址: 组件 :https://developers.weixin.qq.com/miniprogram/dev/component/view.html api:https://dev ...

  3. 《剑指offer》替换空格

    本题来自<剑指offer> 替换空格 题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are% ...

  4. bitset用法详解

    参见此博客: https://www.cnblogs.com/magisk/p/8809922.html

  5. 如何让谷歌浏览器支持跨域访问(AJAX) AJAX调试跨域接口

    以谷歌最新版本为例(2018) 1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData 2.在属性页面中的目标输入框里加上   --disable-web-security -- ...

  6. Android播放功能的实现

    Android播放语言功能的实现 需要用到的类文件TextToSpeech,此类可以实现播放语言的功能 支持播放的语言1.英语 2.法语 3.德语 4.意语 5.西班牙语 1.实例化此类,添加上下文对 ...

  7. Cookie中设置了 HttpOnly,Secure 属性,有效的防止XSS攻击,X-Frame-Options 响应头避免点击劫持

    属性介绍: 1) secure属性当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输(ssl),即 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证, 如果是 HT ...

  8. 目标检测算法SSD之训练自己的数据集

    目标检测算法SSD之训练自己的数据集 prerequesties 预备知识/前提条件 下载和配置了最新SSD代码 git clone https://github.com/weiliu89/caffe ...

  9. JAVA 数据类型数组

    普通int: public class Array { //成员变量 private int[] data; private int size; //构造函数,传入数组的容量capacity构造Arr ...

  10. 如何保证Redis的高并发

    单机的redis几乎不太可能说QPS超过10万+,一般在几万. 除非一些特殊情况,比如你的机器性能特别好,配置特别高,物理机,维护做的特别好,而且你的整体的操作不是太复杂. Redis通过主从架构,实 ...