spring boot如何加入mail邮件支持

 更新时间:2019年12月10日 11:02:33   作者:默闻120  
这篇文章主要介绍了spring boot如何加入mail邮件支持,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了spring boot如何加入mail邮件支持,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、添加依赖

<!-- 邮件整合 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

二、添加mail.properties配置文件

#设置邮箱主机
spring.mail.host=smtp.qq.com
#设置用户名
spring.mail.username=xxxxxxx
#设置密码
#QQ邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得QQ的授权码
spring.mail.password=xxxxxxxxxxxxxxxx
#端口
spring.mail.port=465
#协议
#spring.mail.protocol=smtp
#设置是否需要认证,如果为true,那么用户名和密码就必须的,
#如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。
spring.mail.properties.mail.smtp.auth=true
#STARTTLS[1] 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

三、添加MailConfig.java

package com.spring.config;

import java.io.File;
import java.util.List;
import java.util.Map;

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

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

@Configuration
public class MailConfig {

	@Resource
	private JavaMailSenderImpl mailSender;

	@Value("${spring.mail.username}")
	private String username;

	/**
	 * 发送纯文本形式的email
	 *
	 * @param toEmail 收件人邮箱
	 * @param title  邮件标题
	 * @param content 邮件内容
	 */
	public void sendTextMail(String toEmail, String title, String content) {
		SimpleMailMessage msg = new SimpleMailMessage();
		msg.setFrom(username);
		msg.setTo(toEmail);
		msg.setSubject(title);
		msg.setText(content);
		mailSender.send(msg);
	}

	/**
	 * 发送带有html的内容
	 *
	 * @param toEmail   收件人邮箱
	 * @param title    邮件标题
	 * @param htmlContent 邮件内容
	 */
	public void sendHtmlMail(String toEmail, String title, String htmlContent) throws MessagingException {
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8");
		helper.setFrom(username);
		helper.setTo(toEmail);
		helper.setSubject(title);
		helper.setText(htmlContent, true);
		mailSender.send(msg);
	}

	/**
	 * 添加附件的email发送
	 *
	 * @param toEmail  收件人地址
	 * @param title   邮件标题
	 * @param content  文本内容
	 * @param aboutFiles 附件信息 每个子项都是一个文件相关信息的map Map<String,String>: 1.filePath
	 *          2.fileName
	 * @throws Exception 异常
	 */
	public void sendAttachmentMail(String toEmail, String title, String content, List<Map<String, String>> aboutFiles) throws Exception {
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
		helper.setFrom(username);
		helper.setTo(toEmail);
		helper.setSubject(title);
		helper.setText(content);
		FileSystemResource resource = null;
		for (Map<String, String> file : aboutFiles) {
			resource = new FileSystemResource(file.get("filePath"));
			if (resource.exists()) {// 是否存在资源
				File attachmentFile = resource.getFile();
				helper.addAttachment(file.get("fileName"), attachmentFile);
			}
		}
		mailSender.send(msg);
	}

}

四、使用MailConfig

@Autowired
private MailConfig mailConfig;

使用MailConfig里面的方法发送即可以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中struts2和spring MVC的区别_动力节点Java学院整理

    Java中struts2和spring MVC的区别_动力节点Java学院整理

    这篇文章主要介绍了Java中struts2和spring MVC的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • SpringBoot集成Mybatis实现对多数据源访问原理

    SpringBoot集成Mybatis实现对多数据源访问原理

    本文主要分析讨论在SpringBoot应用中我们该如何配置SqlSessionFactoryBean对象,进而实现对多个不同的数据源的操纵,文章通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Java关键字volatile和synchronized作用和区别

    Java关键字volatile和synchronized作用和区别

    这篇文章主要为大家详细介绍了Java关键字volatile和synchronized的作用和区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • springboot3.X版本集成mybatis遇到的问题及解决

    springboot3.X版本集成mybatis遇到的问题及解决

    在将SpringBoot3.X版本与MyBatis集成时,直接参考基于SpringBoot2.X的配置方法会导致各种报错,尤其是无法注入mapper的bean问题,这主要是因为SpringBoot3.X版本需要搭配MyBatis3.0.3及以上版本才能正常工作,通过更新maven配置至MyBatis3.0.3版本,可以解决这一问题
    2024-09-09
  • spring boot + jpa + kotlin入门实例详解

    spring boot + jpa + kotlin入门实例详解

    这篇文章主要介绍了spring boot + jpa + kotlin入门实例详解 ,需要的朋友可以参考下
    2017-07-07
  • Java8新特性之默认方法(default)浅析

    Java8新特性之默认方法(default)浅析

    这篇文章主要介绍了Java8新特性之默认方法(default)浅析,默认方法也称为虚拟扩展方法或防护方法,可以让我们修改接口而不破坏原来的实现类的结构,需要的朋友可以参考下
    2014-06-06
  • Java中comparator接口和Comparable接口的比较解析

    Java中comparator接口和Comparable接口的比较解析

    这篇文章主要介绍了Java中comparator接口和Comparable接口的比较解析,Java提供了一个用于比较的接口Comparator和Comparable接口,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法,需要的朋友可以参考下
    2023-08-08
  • MyBatis游标Cursor在Oracle数据库上的测试方式

    MyBatis游标Cursor在Oracle数据库上的测试方式

    这篇文章主要介绍了MyBatis游标Cursor在Oracle数据库上的测试方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java 读写 ini 配置文件的示例代码

    java 读写 ini 配置文件的示例代码

    这篇文章主要介绍了java 读写 ini 配置文件,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • java实现图片加水印效果

    java实现图片加水印效果

    这篇文章主要为大家详细介绍了java实现图片加水印效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12

最新评论