这篇文章介绍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. nginx+php负载均衡集群环境中的session共享方案梳理

    在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...

  2. NIO(一)

    1.NIO是什么? 是JDK1.4之后推出的一个新的IO操作(netty.mina通讯框架的底层都是NIO实现的连接) 2.NIO和IO的区别(阻塞只会出现在网络通讯中,都是同步) NIO:非阻塞类型 ...

  3. Metasploit one test

    1.对Metasploit的文件结构层次做一个目录结构图 2.漏洞利用的原理及其过程 攻击者发送一个附加攻击载荷的漏洞攻击代码给存在漏洞的系统.漏洞攻击代码首先执行,如果执行成功,攻击载荷中的实际代码 ...

  4. poj2942 求v-DCC,二分图判奇环,补图

    /* 给定一张无向图,求有多少点不被任何奇环包含 推论1:如果两个点属于两个不同的v-DCC,则他们不可能在同一个奇环内 推论2:某个v-DCC中有奇环,则这个v-DCC中所有点必定被属于某个奇环 只 ...

  5. poj1185 状态压缩经典题

    状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态 ...

  6. bzoj 4011

    看了好多篇题解才看懂的题,我实在太菜了... 首先根据一个我不知道的算法,可以证明在没有加入新的边的时候,原图的所有生成树的方案数就是所有点(除1以外)的度之积 那么在新加入这条边之后,我们仍然可以这 ...

  7. Nginx详解二十五:Nginx架构篇之Nginx常见的问题

    Nginx常见的问题 1.相同server_name多个虚拟主机优先级访问,是按读取文件的优先级来排序 在/opt/app/下准备3个code文件夹,下面放入3个html文件,里面的内容分别是code ...

  8. docker批量删除none镜像

    1.直接用docker images | grep none | awk ‘{print $3}’ |xgars docker rmi 通过关键字搜索,得到docker id,进行删除

  9. spring中的xml配置出处

  10. 在WPF中获取DATAGRIDTEMPLATECOLUMN模板定义的内容控件(转载)

    原文:http://www.cnblogs.com/eric_ibm/p/3772516.html xaml格式描述: <DataGrid Name="dataGrid" G ...