`

Springboot JavaMailSender发送邮件,Springboot整合Email,Springboot发送邮件封装

阅读更多

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发送邮件功能

    SpringBoot JavaMailSender 发送邮件功能是使用 JavaMailSender API 实现的邮件发送功能,该功能可以发送邮件给指定的收件人,实现邮件发送的功能。下面将详细介绍 SpringBoot JavaMailSender 发送邮件功能的实现...

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

    知识点 3: 使用 JavaMailSender 发送邮件 使用 JavaMailSender 可以发送简单的文本邮件或复杂的 HTML 邮件。下面是一个简单的发送邮件示例: ``` @SpringBootTest public class EmailApplicationTests { @...

    SpringBoot整合发送邮件

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

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

    7. **邮件服务实现**:在邮件监听器的处理方法中,可以使用 JavaMailSender 接口发送实际的邮件。配置 SMTP 服务器信息,如 Gmail、Yahoo 或其他邮件提供商,并实现发送逻辑。 在微服务环境中,这样的邮件通知系统...

    Spring Boot整合邮件发送并保存历史发送邮箱

    Spring Boot整合邮件发送并保存历史发送邮箱 项目描述 项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件...

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

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

    Springboot发送邮件

    Spring Boot通过集成了JavaMailSender接口和JavaMailSenderImpl类,为我们提供了方便的邮件发送服务。首先,我们需要在项目的`pom.xml`或`build.gradle`中添加相关依赖,例如对于Maven项目,添加如下依赖: ```xml ...

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

    现在,我们可以创建一个邮件服务类,例如`EmailService.java`,来处理邮件发送的逻辑。首先,我们定义一个`sendEmail`方法,用于发送普通邮件: ```java import org.springframework.beans.factory.annotation....

    Spring框架JavaMailSender发送邮件工具类详解

    Spring框架JavaMailSender发送邮件工具类是一种基于Spring框架的邮件发送工具类,它提供了一个灵活的邮件发送解决方案,允许开发者通过Spring框架来发送邮件。在本文中,我们将详细介绍Spring框架JavaMailSender发送...

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

    为了发送邮件,SpringBoot集成了JavaMailSender接口,我们可以配置SMTP服务器信息,并编写一个服务类来发送包含激活链接的邮件。 邮件内容通常包括一个唯一的激活码或链接,用户点击后会跳转到一个激活页面。这个...

    Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    在Spring Boot应用中,利用JavaMailSender发送邮件是一种常见的需求,Spring Boot的`spring-boot-starter-mail`模块为我们提供了方便的自动化配置。首先,我们需要在项目的`pom.xml`文件中引入这个依赖: ```xml ...

    springboot 定时发送邮件

    然后,创建一个邮件服务类,注入JavaMailSender并编写发送邮件的方法: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org...

    Springboot阿里、腾讯短信和邮件发送service封装

    本文将详细介绍如何在Spring Boot项目中封装阿里和腾讯的短信与邮件发送服务,并根据配置动态启用或禁用这些功能。 首先,我们需要在`pom.xml`文件中添加相关的依赖。对于阿里云短信服务,我们需要添加`alibaba-...

    java发送邮件,spring JavaMailSender 邮件,复制粘贴直接用!!2发送方式

    Java发送邮件是常见的系统集成需求,Spring框架中的JavaMailSender接口提供了一种便捷的方式来实现这一功能。本教程将详细介绍如何使用Spring MVC与JavaMailSender发送邮件,并提供两种发送方式。 首先,我们需要...

    SpringBoot实现发送邮件任务

    SpringBoot实现发送邮件任务 随着互联网技术的发展,电子邮件逐渐成为企业和个人之间交流信息的重要渠道之一。SpringBoot作为目前最流行的Java开发框架之一,当然也提供了发送邮件的功能。本文将详细介绍如何使用...

    基于java语言,springboot框架实现邮件发送.zip

    Spring Boot集成了JavaMailSender接口,简化了发送邮件的过程。下面将逐步解析实现邮件发送的步骤: 1. **引入依赖** 要使用Spring Boot发送邮件,首先需要在项目中添加相关的依赖。在`pom.xml`或`build.gradle`...

    SpringBoot中整合Mail实现简单邮件发送示例代码

    在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能。Spring Boot通过自动配置简化了这个过程,使得开发者无需过多关注底层配置,只需少量代码就能完成邮件的发送。下面将详细介绍如何在Spring...

    SpringBoot实现发送邮件功能过程图解

    在 SpringBoot 项目中,我们使用 `JavaMailSender` 对象来发送邮件,这个对象会将邮件信息转换为 SMTP 协议,并将其发送到邮件服务器上。 知识点五:邮件服务器的配置 在发送邮件时,需要配置邮件服务器的相关信息...

    SpringBoot使用JavaMailSender发送邮件,yml配置

    前言,使用springboot的JavaMailSender接口实现邮件发送其实非常简单,但是有个问题就是发送的时候需要配置抄送者是自己,不然的就会报异常 org.springframework.mail.MailSendException: Failed messages: ...

    SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能

    在本项目中,"SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能"是一个典型的企业级应用示例,它展示了如何将SpringBoot框架与Apache ActiveMQ集成,以实现基于消息队列的邮件发送服务。下面我们将详细探讨这个...

Global site tag (gtag.js) - Google Analytics