spring boot使用常规发送邮件
spring boot使用常规发送邮件
1.pom.xml文件依赖:
<!-- javax.mail begin-->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!-- javax.mail end-->
2.配置文件:
#email,非springBoot
mail.smtp.auth=true
mail.transport.protocol=smtp
mail.send.charset=UTF-8
mail.smtp.port=465
mail.is.ssl=true
mail.host=smtp.163.com
mail.auth.name=xxxxxxxxxxx@163.com
#密码是邮箱的授权码,并不是邮箱的密码。
mail.auth.password=***********
mail.smtp.timeout=5000
3.发送邮件类:
import com.sun.mail.util.MailSSLSocketFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component; import javax.annotation.PostConstruct;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.security.GeneralSecurityException;
import java.util.List;
import java.util.Map;
import java.util.Properties; /**
* @author zh
* @ClassName cn.aduu.utils.EmailUtils
* @Description: https://blog.csdn.net/saytime/article/details/78963201
*/
@Component
public class EmailUtils { private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class); @Autowired
private Environment env; private static String auth;
private static String host;
private static String protocol;
private static int port;
private static String authName;
private static String password;
private static boolean isSSL;
private static String charset ;
private static String timeout; @PostConstruct
public void initParam () {
auth = env.getProperty("mail.smtp.auth");
host = env.getProperty("mail.host");
protocol = env.getProperty("mail.transport.protocol");
port = env.getProperty("mail.smtp.port", Integer.class);
authName = env.getProperty("mail.auth.name");
password = env.getProperty("mail.auth.password");
charset = env.getProperty("mail.send.charset");
isSSL = env.getProperty("mail.is.ssl", Boolean.class);
timeout = env.getProperty("mail.smtp.timeout");
} /**
* 发送邮件
* @param subject 主题
* @param toUsers 收件人
* @param ccUsers 抄送
* @param content 邮件内容
* @param attachfiles 附件列表 List<Map<String, String>> key: name && file
*/
public static boolean sendEmail(String subject, String[] toUsers, String[] ccUsers, String content, List<Map<String, String>> attachfiles) {
boolean flag = true;
try {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host);
javaMailSender.setUsername(authName);
javaMailSender.setPassword(password);
javaMailSender.setDefaultEncoding(charset);
javaMailSender.setProtocol(protocol);
javaMailSender.setPort(port); Properties properties = new Properties();
properties.setProperty("mail.smtp.auth", auth);
properties.setProperty("mail.smtp.timeout", timeout);
if(isSSL){
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
}
javaMailSender.setJavaMailProperties(properties); MimeMessage mailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true);
messageHelper.setTo(toUsers);
if (ccUsers != null && ccUsers.length > 0) {
messageHelper.setCc(ccUsers);
}
messageHelper.setFrom(authName);
messageHelper.setSubject(subject);
messageHelper.setText(content, true); if (attachfiles != null && attachfiles.size() > 0) {
for (Map<String, String> attachfile : attachfiles) {
String attachfileName = attachfile.get("name");
File file = new File(attachfile.get("file"));
messageHelper.addAttachment(attachfileName, file);
}
}
javaMailSender.send(mailMessage); } catch (Exception e) {
logger.error("发送邮件失败!", e);
flag = false;
}
return flag;
}
}
4.controller:
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import spring.boot.com.email.EmailUtils;
import spring.boot.com.entity.User; /**
* @author:
* @date: 2018/8/8
* @description:
*/
@RestController
public class UserController { @RequestMapping("sendEmail")
public String sendEmail() throws JsonProcessingException {
boolean isSend = EmailUtils.sendEmail("这是一封测试邮件", new String[]{"********@qq.com"}, null, "<h3><a href='http://www.baidu.com'>百度一下,你就知道</a></h3>", null);
return "发送邮件:" + isSend;
}
}
spring boot使用常规发送邮件的更多相关文章
- Spring Boot使用JavaMailSender发送邮件
http://www.cnblogs.com/wxc-xiaohuang/p/9532631.html https://blog.csdn.net/icannotdebug/article/detai ...
- Spring Boot笔记之邮件(spring-boot-starter-mail)
Spring Boot环境中发送邮件 pom.xml引入`spring-boot-starter-mail` application.yml配置 163邮箱 QQ邮箱 Gmail邮箱 发送邮件 ser ...
- Spring Boot 发送邮件
需求 最近因为业务的变更,需要对老用户进行发送邮件处理.目前市面上也有很多代发邮件的接口,可以接入.由于量不是特别大,放弃了这个途径.改用我们自己通过 smtp 发送邮件来处理. 技术选择 Java ...
- Spring boot 发送邮件示例
最近的一个项目中用到了邮件发送,所以研究了一下.将其总结下来. 首先 登录邮箱 -->设置-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务--> ...
- Spring Boot 之发送邮件
Spring Boot 之发送邮件 简介 API 配置 实战 引入依赖 配置邮件属性 Java 代码 完整示例 引申和引用 简介 Spring Boot 收发邮件最简便方式是通过 spring-boo ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件
文章目录 1. Spring Boot 集成 Java Mail 2. 单元测试 3. 源代码 Spring 对 Java Mail 有很好的支持.因此,Spring Boot 也提供了自动配置的支持 ...
- Spring Boot 使用465端口发送邮件
2017年10月27日 15:04:24 伊宇紫 阅读数:2710 标签: 465端口邮件springboot 更多 个人分类: Java 版权声明:本文为博主原创文章,未经博主允许不得转载. h ...
- Spring Boot中使用JavaMailSender发送邮件
相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...
- Spring boot发送邮件
最近接到一个需求:分配任务给用户时,发送邮件提醒用户. 后端应该和Andorid一样有现成的api支持,浏览器里搜索了下,果不其然,很轻松就实现了这个功能,现在记录下. 首先添加Maven依赖 < ...
随机推荐
- 08_代码块丶继承和final
Day07笔记 课程内容 1.封装 2.静态 3.工具类 4.Arrays工具类 封装 概述 1.封装:隐藏事物的属性和实现细节,对外提供公共的访问方式 2.封装的好处: 隐藏了事物的实现细节 提高了 ...
- JavaWeb——使用会话维持状态
1.会话的作用 使用会话是为了维持状态,维持的是请求域请求之间的状态.因为HTTP请求自身是完全无状态的.从服务器的角度来看,当用户发出第一个请求开始,服务器无法将新的请求与之前的请求关联起来,举例说 ...
- Java——集合类
1.容器的打印 import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import jav ...
- 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】
[前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...
- (2019版本可用)【idea的安装,激活,设置,卸载】
前言 也差不多也可以使用简单快捷的idea软件了,相对于elicpse而言的话,idea是非常好用的,虽然现在涉及不是很广. 什么是idea? IDEA 全称IntelliJ IDEA,是用于java ...
- (十五)c#Winform自定义控件-键盘(二)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- laya2d 与 cad 之间的坐标转换
坐标系基本概念 直角坐标系可分为左手坐标系与右手坐标系,cad 中用到的是右手坐标系, Laya2D 中用到的是左手坐标系, Laya3D 中使用右手坐标系. 那么如何判断二维直角坐标系是左手还是右手 ...
- canvas 鼠标位置缩放图形
最近再做 webcad , 需要在 canvas 上对图形进行缩放,主要分为以下几个步骤: 1.找到当前光标所在位置,确定其在相对 canvas 坐标系的坐标 绑定鼠标滚轮事件,假定每次缩放比例 0 ...
- Yii的srbac拓展中“用户已经获授权项”无法查看
Yii的srbac拓展中“用户已经获授权项”点下拉框,选择一个有权限的用户时,根本无法列出权限. 原因是srbac把数据库的表中的ID默认为数字,像 123这样,但如果不是数字像这样 'y0f22ff ...
- 类spring ioc 泛型保留
类spring ioc 泛型保留 什么是泛型擦除 Java并不会传递泛型类,举个直观的栗子: @Component public class BaseProvider<T> { publi ...