写作原因:

项目接近尾声,需求一变再变,其实技术点从未改变,只是业务逻辑的变更,发送邮件提醒的功能,两个月变更七次。我想把技术点记录下来,这里无关乎业务,只有发送邮件的功能。

邮件发送准备说明:

由于公司项目需求,所以我们使用的邮箱是本公司内部邮箱,所以部门给我们系统提供的邮箱是国际邮箱,也就是最高权限邮箱。所以邮箱配置,需要根据提供邮箱的形式配置。

pom.xml

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

application.yml

spring:
mail:
host: smtp.xxx.com
port: 25
username: xxx@xxx.com
password: xxx
default-encoding: UTF-8
thymeleaf: false

注意:host:属性默认是 JavaMail 会话的主机;

port:端口默认监听标准的 SMTP 端口25,如果公司内部禁用的话,可以采用465;

username:发送方的邮箱;

password:邮箱密码,如果是qq或者163邮箱的话,是邮箱授权码;

default-encoding:邮件编码字符集;

thymeleaf:模板生成email,Spring 给出的解决方案是 使用模板生成Email,有多种模板方案可供选择;

controller :

import io.swagger.annotations.Api;


import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("mail")
@Api(description = "邮件发送")
public class MailSendController {

@Autowired
private IMailService service;

@PostMapping("/sendText")
public ResponseStatus send() {
return service.sendMail();
}
}

service:

import xxx.xxx.xxx.xxx.ResponseStatus;


public interface IMailService {

public void sendMail();
}

IMailServiceImpl:

import xxx.xxx.xxx.xxx.IMailService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service; import javax.annotation.Resource;
import java.util.Date; @Service
public class IMailServiceImpl implements IMailService { @Resource
private JavaMailSender javaMailSender; @Value("${spring.mail.username}")
private String from; @Override
public void sendMail(String title, String text, String to) {
//邮件对象
SimpleMailMessage message = new SimpleMailMessage(); //邮件主题
String title = "我是测试邮件的主题";
//邮件内容
String text = "我是这封测试邮件的内容,内容多多,可以根据自身业务填充";
//接收邮件人邮箱
String to = "xxx@xxx"; // 发送人的邮箱(系统配置的邮箱)
message.setFrom(from);
//发给谁对方邮箱(接收有邮件人邮箱)
message.setTo(to);
//标题
message.setSubject(title);
//内容
message.setText(text);
//发件日期
message.setSentDate(new Date());
//发送
javaMailSender.send(message);
ResponseStatus.ok();
}
}

总结:

1、yum文件中邮箱配置需要特别注意,不同邮箱在配置password的时候,应特别注意,企业自己邮箱未经设置的话,是邮箱密码,我采用的这种形式。QQ邮箱及163邮箱在此处是邮箱授权码,如何取得授权码可自行问“度娘”。

2、邮件端口设置默认25,如果端口被占用的话使用465。

3、SpringBoot中集成邮件服务记录,小白成长中,望不吝赐教。

本文作者:[魂皓轩][1] 欢迎关注公众号

本人保留所有权益,转载请注明出处。

欢迎有故事、有想法的朋友和我分享,可发送至 e-mail: lwqforit@163.com

[1]: 1 "文章编辑专用,同步微信公众号,微信,博客园,知乎,微博,思否(segmentfault),掘金,QQ

springboot 简单邮件发送的更多相关文章

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

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

  2. SpringBoot整合邮件发送

    本节介绍SpringBoot项目如何快速配置和发送邮件,包括简单的邮件配置.发送简单邮件.发送HTML邮件.发送携带附件的邮件等. 示例源码在:https://github.com/laolunsi/ ...

  3. SpringBoot集成邮件发送

    一:简述 在日常中的工作中难免会遇到程序集成邮件发送功能.接收功能:此篇文章我将使用SpringBoot集成邮件发送功能和接收功能:若对邮件一些基本协议和发送流程不懂的请务必参考我之前写的博客或者浏览 ...

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

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

  5. springboot实现邮件发送

    1.创建springboot项目. 2.创建好的项目如图: 在static目录下新建index.html. 3.点击启动项目 在浏览器的地址栏中访问:http://localhost:8080/ 访问 ...

  6. 补习系列(12)-springboot 与邮件发送【华为云技术分享】

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

  7. 使用javaMail实现简单邮件发送

    一.首先你要用来发送邮件的qq邮箱需要开通pop3/smtp服务,这个可以百度一下就知道了 二.导入所需要的jar包,我使用的是maven添加依赖 <dependency> <gro ...

  8. springboot+kafka+邮件发送(最佳实践)

    导读 集成spring-kafka,生产者生产邮件message,消费者负责发送 引入线程池,多线程发送消息 多邮件服务器配置 定时任务生产消息:计划邮件发送 实现过程 导入依赖 <proper ...

  9. springboot开篇 (一)简单邮件发送

    上篇终结篇为spring 发送邮件,这次将使用springboot 发送邮件,同时本篇将作为springboot入门篇. 新建一个工程..工程目录结构如下,此次使用idea进行开发.对于一个长期使用e ...

随机推荐

  1. tyvj1467 通向聚会的道路

    背景   Candy住在一个被划分为n个区域的神奇小镇中,其中Candy的家在编号为n的区域,Candy生日这天,大家都急急忙忙赶去Candy家庆祝Candy的生日. 描述   Candy共有t个朋友 ...

  2. 使用 EnumWindows 找到满足你要求的窗口 - walterlv

    原文:使用 EnumWindows 找到满足你要求的窗口 - walterlv 使用 EnumWindows 找到满足你要求的窗口 2019-04-30 13:11 在 Windows 应用开发中,如 ...

  3. 阿里云POLARDB 2.0重磅来袭!为何用户如此的期待?

    点击报名:POLARDB 2.0 升级发布会 回顾POLARDB 1.0升级之路 POLARDB 1.0主要的改进包括采用了计算存储分离的架构,完全兼容MYSQL,性能是原生MySQL的6倍.一个用户 ...

  4. hdu 3234 Exclusive-OR (并查集)

    Problem - 3234 题意不难理解,就是给出一些断言,以及一些查询,回答查询或者在找到断言矛盾以后沉默不做任何事. 这题其实就是一个并查集的距离存储问题,只要记录并查集元素的相对值以及绝对值就 ...

  5. win10 uwp httpClient 登陆CSDN

    本文告诉大家如何模拟登陆csdn,这个方法可以用于模拟登陆其他网站. HttpClient 使用 Cookie 我们可以使用下面代码让 HttpClient 使用 Cookie ,有了这个才可以保存登 ...

  6. C++ 结构体的定义

    struct 结构体名称{    数据类型 A:    数据类型 B; }结构体变量名; 相当于: struct 结构体名称{    数据类型 A:    数据类型 B; }; struct 结构体名 ...

  7. props & children

    一. choosing the type at runtime import React from 'react'; import { PhotoStory, VideoStory } from '. ...

  8. H3C 电路交换连接模型

  9. a span做成按钮时,文字不被选中样式

    HTML: <a class="button"></a> <span class="button"></span> ...

  10. LEMP--如何在Ubuntu上安装Linux、Nginx、MySQL和PHP

    简介 LEMP是用来搭建动态网站的一组软件,首字母缩写分别表示Linux.Nginx(Engine-X).MySQL和PHP. 本文将讲述如何在Ubuntu安装LEMP套件.当然,首先要安装Ubunt ...