`
kanpiaoxue
  • 浏览: 1782039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

springboot发送邮件

 
阅读更多

 

参考资料:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-email.html

https://docs.spring.io/spring/docs/5.0.11.RELEASE/spring-framework-reference/integration.html#mail

http://www.ityouknow.com/springboot/2017/05/06/springboot-mail.html

 

 

import java.util.Collection;

import javax.mail.MessagingException;

/**
 * @ClassName: MailService
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime: 2018/11/30 11:39:16
 * @Description: 邮件服务类接口
 */
public interface MailService {
    /**
     *
     * @param to
     *            邮件接收人列表,如:hello@163.com
     * @param subject
     *            邮件标题
     * @param content
     *            邮件内容。支持HTML
     * @param filePath
     *            附件地址列表
     * @throws MessagingException
     * @author kanpiaoxue
     * @CreateTime: 2018/11/30 14:21:10
     * @Description: 发送带有附件的邮件
     */
    void sendAttachmentsMail(Collection<String> to, String subject, String content,
            Collection<String> filePaths) throws MessagingException;

    /**
     *
     * @param to
     *            邮件接收人列表,如:hello@163.com
     * @param subject
     *            邮件标题
     * @param content
     *            邮件内容。支持HTML
     * @throws MessagingException
     * @author kanpiaoxue
     * @CreateTime: 2018/11/30 14:21:08
     * @Description: 发送邮件
     */
    void sendEmail(Collection<String> to, String subject, String content) throws MessagingException;
}

 

 

 

 

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import com.google.common.base.Stopwatch;

import java.io.File;
import java.util.Collection;

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

/**
 * @ClassName: MailServiceImpl
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime: 2018/11/30 11:41:02
 * @Description: 邮件服务实现类
 */
@Service
public class MailServiceImpl implements MailService {
    private static final Logger LOGGER = LoggerFactory.getLogger(MailServiceImpl.class);
    @Value("${email.from:hello@163.com}")
    private String from;
    @Autowired
    private JavaMailSender mailSender;


    @Override
    public void sendAttachmentsMail(Collection<String> to, String subject, String content,
            Collection<String> filePaths) throws MessagingException {
        LOGGER.info("start to sendAttachmentsMail. to:{},subject:{},content:{},filePaths:{}", to, subject,
                content, filePaths);
        sendAttachmentsMail(to.toArray(new String[] {}), subject, content, filePaths);
    }


    @Override
    public void sendEmail(Collection<String> to, String subject, String content) throws MessagingException {
        LOGGER.info("start to sendEmail. to:{},subject:{},content:{}", to, subject, content);
        sendAttachmentsMail(to.toArray(new String[] {}), subject, content, null);
    }

    private void sendAttachmentsMail(String[] to, String subject, String content,
            Collection<String> filePaths) throws MessagingException {
        Stopwatch sw = Stopwatch.createStarted();
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject(StringUtils.isNotBlank(subject) ? subject.trim() : subject);
        helper.setText(StringUtils.isNotBlank(content) ? content.trim() : content, true);

        if (CollectionUtils.isNotEmpty(filePaths)) {
            for (String filePath : filePaths) {
                FileSystemResource file = new FileSystemResource(new File(filePath.trim()));
                String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
                helper.addAttachment(fileName, file);
            }
        }
        mailSender.send(message);
        LOGGER.info("finsih sendAttachmentsMail. to:{},subject:{},content:{},filePaths:{}. it consumes {}",
                to, subject, content, filePaths, sw);
    }

}

 

 

application.yml

spring:
  mail:
    protocol: smtp
    host: smtp.163.com
    port: 25
    username: hello@163.com
    password: 163.pwd
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          connectiontimeout: 5000
          timeout: 5000
          writetimeout: 10000
email:
  from: hello@163.com    

 

 

 

分享到:
评论

相关推荐

    SpringBoot发送邮件功能 验证码5分钟过期

    SpringBoot发送邮件功能验证码5分钟过期 以下是关于SpringBoot发送邮件功能验证码5分钟过期的详细介绍: 标题解释 SpringBoot发送邮件功能验证码5分钟过期是指使用SpringBoot框架发送邮件,验证码的有效期为5分钟...

    springboot发送邮件(含带附件的邮件,定时任务等功能)

    在Spring Boot框架中,发送邮件是一项常见的需求,无论是发送通知、报表还是其他信息。本教程将详细介绍如何在Spring Boot项目中实现邮件发送功能,包括发送普通邮件和带有附件的邮件,以及如何设置定时任务来自动...

    Springboot发送邮件

    本主题将深入探讨如何使用Spring Boot实现邮件发送功能,涵盖了文本邮件、图片邮件、模板邮件和HTML邮件的发送。 一、Spring Boot集成邮件服务 Spring Boot通过集成了JavaMailSender接口和JavaMailSenderImpl类,...

    10分钟实现SpringBoot发送邮件功能.docx

    10分钟实现SpringBoot发送邮件功能

    SpringBoot发送邮件代码

    在Spring Boot框架中,发送邮件是一项常见的功能,用于与用户进行互动或自动化处理。Spring Boot提供了集成JavaMailSender接口的便利方法,使得我们能够轻松地实现邮件服务。本篇文章将详细讲解如何在Spring Boot...

    springboot发送邮件完整demo

    在Spring Boot框架中,发送邮件是一项常见的功能,用于与用户进行互动或传递重要信息。Spring Boot提供了方便的集成,使得我们可以轻松地实现模板邮件、附件邮件以及普通邮件的发送。以下将详细介绍这些邮件类型的...

    SpringBoot定时发送邮件示例代码.rar

    SpringBoot定时发送邮件示例代码;SpringBoot定时发送邮件示例代码SpringBoot定时发送邮件示例代码SpringBoot定时发送邮件示例代码SpringBoot定时发送邮件示例代码

    springboot实现发送邮件(QQ邮箱为例)

    Spring Boot 实现发送邮件(QQ 邮箱为例) 本文主要介绍了如何使用 Spring Boot 框架实现发送邮件, 以 QQ 邮箱为例,通过代码示例详细介绍了发送邮件的过程,并提供了完整的代码实现供读者参考。 知识点 1: ...

    springboot2发邮件源码

    spring boot 2 发送邮件代码,包括普通邮件,html邮件,附件邮件等

    基于SpringBoot整合RabbitMQ发送邮件通知

    在微服务环境中,这样的邮件通知系统可以作为一个独立的服务存在,其他服务只需要发送消息到 RabbitMQ 的邮件队列即可触发邮件发送,实现了服务间的解耦。 总结来说,SpringBoot 结合 RabbitMQ 可以帮助我们构建...

    SpringBoot发送邮件神器,只需简单配置即可,支持自定义模板.zip

    springboot Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB...

    springboot邮件demo

    - 使用Spring的`JavaMailSender`接口,该接口提供了发送邮件的方法,如`send(MimeMessagePreparator preparator)`。 - 可以通过`@Autowired`注解注入`JavaMailSender`,然后创建`MimeMessage`对象来准备邮件内容,...

    SpringBoot mail中文附件乱码的解决方法

    在使用 SpringBoot 发送邮件时,经常会遇到附件名称中文乱码的问题。本文将详细介绍解决此问题的方法。 问题分析 在发送邮件时,我们需要将附件名称编码,以便正确地传输中文名称。然而,在 SpringBoot 中,如果不...

    发送邮件工具类

    发送邮件

    【瑞吉外卖】SpringBoot使用邮件发送短信验证码--完善用户登录功能

    在本文中,我们将深入探讨如何使用SpringBoot框架发送邮件,特别是用于发送短信验证码以增强用户登录功能。这个示例是基于“瑞吉外卖”项目,由黑马程序员提供,通过集成SpringBoot的`spring-boot-starter-mail`依赖...

    Vue结合SpringBoot注册发送邮件激活.zip

    - **邮箱服务**:SpringBoot可以通过集成JavaMailSender接口来发送邮件。配置SMTP服务器信息,如主机地址、端口、用户名、密码等。 3. **邮件激活流程**: - **生成激活码**:为每个新注册用户生成唯一的激活码,...

    SpringBoot整合发送邮件

    在Java开发中,Spring Boot框架提供了便捷的方式来整合各种服务,包括发送邮件的功能。Spring Boot的邮件服务基于JavaMailSender接口,使得我们可以轻松地配置并发送电子邮件。本文将深入探讨如何在Spring Boot应用...

    springboot用户注册、找回密码的邮箱验证码存入redis,三分钟有效

    所以要配置邮箱可以正常发送邮件,详情清看:SpringBoot使用JavaMailSender发送邮件 3.使用随机数生成四位随机数,当作验证码,并且设置失效时间为三分钟, String emailReg = ^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1...

Global site tag (gtag.js) - Google Analytics