Springboot JavaMailSender发送邮件,Springboot整合Email,Springboot发送邮件封装
================================
©Copyright 蕃薯耀 2020-08-31
http://fanshuyao.iteye.com/
发送邮件,包括多邮件同时发送、附件、抄送功能
一、引入Jar包依赖
pom.xml文件
<properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <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> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
二、application.properties文件配置
#POP3服务器: pop.163.com #SMTP服务器: smtp.163.com #IMAP服务器: imap.163.com spring.mail.host=smtp.163.com spring.mail.username=xxx@163.com #spring.mail.from不支持中文,需要中文,看mail.properties spring.mail.password=密码,通过开启SMTP获取密码 #465或者994 spring.mail.properties.mail.smtp.port: 465 spring.mail.properties.mail.smtp.ssl.enable: true spring.mail.default-encoding=UTF-8
三、mail.properties文件配置
email.from.name=公司内部邮件
四、MailService
import javax.mail.MessagingException; import org.springframework.mail.javamail.MimeMessageHelper; public interface MailService { void handleAttachments(MimeMessageHelper mimeMessageHelper, String subject, String[] attachmentFilePaths); /** * 发送附件 * @param subject 邮件主题 * @param content 邮件内容 * @param toEmails 接收的邮箱 * @param ccPeoples 抄送人 * @param bccPeoples 密送人,就是发送人和抄送人那里都不显示该收件人,但能收到邮件。 * @param attachmentFilePaths 附件 * @throws MessagingException */ void send(String subject, String content, String[] toEmails, String[] ccPeoples, String[] bccPeoples, String[] attachmentFilePaths) throws MessagingException; /** * 发送附件 * @param subject String 邮件主题 * @param content String 邮件内容 * @param toEmails String[] 接收的邮箱 */ void send(String subject, String content, String[] toEmails) throws MessagingException; /** * 发送附件 * @param subject String 邮件主题 * @param content String 邮件内容 * @param toEmails String[] 接收的邮箱 * @param attachmentFilePaths String[] 附件 * <li>new String[] {"F:\\0desk\\邮件文档哦.pdf", "F:\\0desk\\maven-jar-plugin.txt"}</li> * @throws MessagingException */ void send(String subject, String content, String[] toEmails, String[] attachmentFilePaths) throws MessagingException; }
五、MailServiceImpl文件
import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; 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.context.annotation.PropertySource; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import com.lqy.mail.service.MailService; @Service @PropertySource(value="classpath:mail.properties", encoding="utf-8", ignoreResourceNotFound = true) public class MailServiceImpl implements MailService{ private final Logger log = LoggerFactory.getLogger(MailServiceImpl.class); @Value("${spring.mail.default-encoding}") public String defaultEncoding; /** * Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用 */ @Autowired private JavaMailSender mailSender; @Value(value = "${spring.mail.username}") private String username; @Value(value = "${email.from.name}") private String emailFromName; /** * 处理附件 */ @Override public void handleAttachments(MimeMessageHelper mimeMessageHelper, String subject, String[] attachmentFilePaths){ //判断是否需要处理邮件的附件 if(attachmentFilePaths != null && attachmentFilePaths.length > 0) { FileSystemResource resource; String fileName; //循环处理邮件的附件 for (String attachmentFilePath : attachmentFilePaths) { //获取该路径所对应的文件资源对象 resource = new FileSystemResource(new File(attachmentFilePath)); //判断该资源是否存在,当不存在时仅仅会打印一条警告日志,不会中断处理程序。 // 也就是说在附件出现异常的情况下,邮件是可以正常发送的,所以请确定你发送的邮件附件在本机存在 if (!resource.exists()) { log.warn("邮件->{} 的附件->{} 不存在!", subject, attachmentFilePath); //开启下一个资源的处理 throw new RuntimeException("邮件需要发送的附件不存在。"); } //获取资源的名称 fileName = resource.getFilename(); try { //添加附件 mimeMessageHelper.addAttachment(fileName, resource); } catch (MessagingException e) { e.printStackTrace(); log.error("邮件->{} 添加附件->{} 出现异常->{}", subject, attachmentFilePath, e.getMessage()); } } } } /** * 发送附件 * @param subject 邮件主题 * @param content 邮件内容 * @param toEmails 接收的邮箱 * @param ccPeoples 抄送人 * @param bccPeoples 密送人,就是发送人和抄送人那里都不显示该收件人,但能收到邮件。 * @param attachmentFilePaths 附件 * @throws MessagingException */ @Override public void send(String subject, String content, String[] toEmails, String[] ccPeoples, String[] bccPeoples, String[] attachmentFilePaths) throws MessagingException { //附件处理需要进行二进制传输 MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, defaultEncoding); //设置发件人 log.info("emailFromName = " + emailFromName); //log.info("from = " + from); mimeMessageHelper.setFrom(emailFromName + "<"+ username + ">"); //设置邮件的主题 log.info("subject = " + subject); mimeMessageHelper.setSubject(subject); //设置邮件的内容,区别是否是HTML邮件 mimeMessageHelper.setText(content, true);//所有都以html格式发送 //设置邮件的收件人 log.info("toEmails = " + toEmails); mimeMessageHelper.setTo(toEmails); if(ccPeoples != null && ccPeoples.length > 0) { //设置邮件的抄送人 mimeMessageHelper.setCc(ccPeoples); } if(bccPeoples != null && bccPeoples.length > 0) { //设置邮件的密送人 mimeMessageHelper.setBcc(bccPeoples); } if(attachmentFilePaths != null && attachmentFilePaths.length > 0) { handleAttachments(mimeMessageHelper, subject, attachmentFilePaths); } mailSender.send(mimeMessage); } /** * 发送附件 * @param subject String 邮件主题 * @param content String 邮件内容 * @param toEmails String[] 接收的邮箱 */ @Override public void send(String subject, String content, String[] toEmails) throws MessagingException { this.send(subject, content, toEmails, null, null, null); } /** * 发送附件 * @param subject String 邮件主题 * @param content String 邮件内容 * @param toEmails String[] 接收的邮箱 * @param attachmentFilePaths String[] 附件 * @throws MessagingException */ @Override public void send(String subject, String content, String[] toEmails, String[] attachmentFilePaths) throws MessagingException { this.send(subject, content, toEmails, null, null, attachmentFilePaths); } }
六、发送邮件,示例代码:
@RequestMapping("/send4") public String send4(HttpServletRequest req, HttpServletResponse res) throws MessagingException { mailService.send("会议通知", "邮件内容,可以是html内容", new String[] {"123456@qq.com", "147258@qq.com"}, new String[] {"F:\\0desk\\邮件文档哦.pdf", "F:\\0desk\\maven-jar-plugin.txt"}); return "success"; }
七、效果
================================
©Copyright 蕃薯耀 2020-08-31
http://fanshuyao.iteye.com/
相关推荐
SpringBoot JavaMailSender 发送邮件功能是使用 JavaMailSender API 实现的邮件发送功能,该功能可以发送邮件给指定的收件人,实现邮件发送的功能。下面将详细介绍 SpringBoot JavaMailSender 发送邮件功能的实现...
知识点 3: 使用 JavaMailSender 发送邮件 使用 JavaMailSender 可以发送简单的文本邮件或复杂的 HTML 邮件。下面是一个简单的发送邮件示例: ``` @SpringBootTest public class EmailApplicationTests { @...
在Java开发中,Spring Boot框架提供了便捷的方式来整合各种服务,包括发送邮件的功能。Spring Boot的邮件服务基于JavaMailSender接口,使得我们可以轻松地配置并发送电子邮件。本文将深入探讨如何在Spring Boot应用...
7. **邮件服务实现**:在邮件监听器的处理方法中,可以使用 JavaMailSender 接口发送实际的邮件。配置 SMTP 服务器信息,如 Gmail、Yahoo 或其他邮件提供商,并实现发送逻辑。 在微服务环境中,这样的邮件通知系统...
Spring Boot整合邮件发送并保存历史发送邮箱 项目描述 项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件...
- **邮箱服务**:SpringBoot可以通过集成JavaMailSender接口来发送邮件。配置SMTP服务器信息,如主机地址、端口、用户名、密码等。 3. **邮件激活流程**: - **生成激活码**:为每个新注册用户生成唯一的激活码,...
Spring Boot通过集成了JavaMailSender接口和JavaMailSenderImpl类,为我们提供了方便的邮件发送服务。首先,我们需要在项目的`pom.xml`或`build.gradle`中添加相关依赖,例如对于Maven项目,添加如下依赖: ```xml ...
现在,我们可以创建一个邮件服务类,例如`EmailService.java`,来处理邮件发送的逻辑。首先,我们定义一个`sendEmail`方法,用于发送普通邮件: ```java import org.springframework.beans.factory.annotation....
Spring框架JavaMailSender发送邮件工具类是一种基于Spring框架的邮件发送工具类,它提供了一个灵活的邮件发送解决方案,允许开发者通过Spring框架来发送邮件。在本文中,我们将详细介绍Spring框架JavaMailSender发送...
为了发送邮件,SpringBoot集成了JavaMailSender接口,我们可以配置SMTP服务器信息,并编写一个服务类来发送包含激活链接的邮件。 邮件内容通常包括一个唯一的激活码或链接,用户点击后会跳转到一个激活页面。这个...
在Spring Boot应用中,利用JavaMailSender发送邮件是一种常见的需求,Spring Boot的`spring-boot-starter-mail`模块为我们提供了方便的自动化配置。首先,我们需要在项目的`pom.xml`文件中引入这个依赖: ```xml ...
然后,创建一个邮件服务类,注入JavaMailSender并编写发送邮件的方法: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org...
本文将详细介绍如何在Spring Boot项目中封装阿里和腾讯的短信与邮件发送服务,并根据配置动态启用或禁用这些功能。 首先,我们需要在`pom.xml`文件中添加相关的依赖。对于阿里云短信服务,我们需要添加`alibaba-...
Java发送邮件是常见的系统集成需求,Spring框架中的JavaMailSender接口提供了一种便捷的方式来实现这一功能。本教程将详细介绍如何使用Spring MVC与JavaMailSender发送邮件,并提供两种发送方式。 首先,我们需要...
SpringBoot实现发送邮件任务 随着互联网技术的发展,电子邮件逐渐成为企业和个人之间交流信息的重要渠道之一。SpringBoot作为目前最流行的Java开发框架之一,当然也提供了发送邮件的功能。本文将详细介绍如何使用...
Spring Boot集成了JavaMailSender接口,简化了发送邮件的过程。下面将逐步解析实现邮件发送的步骤: 1. **引入依赖** 要使用Spring Boot发送邮件,首先需要在项目中添加相关的依赖。在`pom.xml`或`build.gradle`...
在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能。Spring Boot通过自动配置简化了这个过程,使得开发者无需过多关注底层配置,只需少量代码就能完成邮件的发送。下面将详细介绍如何在Spring...
在 SpringBoot 项目中,我们使用 `JavaMailSender` 对象来发送邮件,这个对象会将邮件信息转换为 SMTP 协议,并将其发送到邮件服务器上。 知识点五:邮件服务器的配置 在发送邮件时,需要配置邮件服务器的相关信息...
前言,使用springboot的JavaMailSender接口实现邮件发送其实非常简单,但是有个问题就是发送的时候需要配置抄送者是自己,不然的就会报异常 org.springframework.mail.MailSendException: Failed messages: ...
在本项目中,"SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能"是一个典型的企业级应用示例,它展示了如何将SpringBoot框架与Apache ActiveMQ集成,以实现基于消息队列的邮件发送服务。下面我们将详细探讨这个...