SpringBoot实现邮件发送

发送前准备

发送

1、环境搭建

使用SpringBoot发送邮件,首先导入依赖:

<!-- 发送邮箱的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

项目创建成功后,在application.properties中完成邮件基本信息配置,如下:

这样基本的环境就搭建好了。

2、发送简单邮件

创建一个service用来封装邮件的发送,代码如下:

代码解释:

    JavaMailSender是SpringBoot在MailSenderPropertiesConfiguration类中 配置好的,该类在 Mail自动配置类MailSenderAutoConfiguration中导入,因此这里注入JavaMailSender就可以使用了。 简单邮件可以直接构建一个SimpleMailMessage对象进行配置,配置完成后,通过JavaMailSender将邮件发出去。

配置完成后,在单元测试中写一个测试方法进行测试,代码如下:

3、发送带附件的邮件

要发送带附件的邮件也非常容易,通过调用Attachment方法即可添加附件,该方法调用多次即可添加多个附件。

/**
     * 发送带附件的邮件
     * @param from      邮件发送者
     * @param to        邮件收件者
     * @param subject   邮件主题
     * @param content   邮件内容
     * @param file      附件
     */
    public void sendAttachFileMail(String from, String to, String subject, String content, File file){
          
   
        try {
          
   
            MimeMessage mimeMessage=javaMailSender.createMimeMessage();
            MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content);
            helper.addAttachment(file.getName(),file);
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
          
   
            e.printStackTrace();
        }
    }

这里使用MimeMessageHelper简化了邮件配置,他的构造方法的第二个参数true表示构造一个multipart message类型的邮件,multipart message类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更加丰富。最后通过addAttachment方法添加附件。 在单元测试中添加如下方法进行测试:

4、发送带图片资源的邮件

有的邮件正文中可能要插入图片,使用FileSystemResource可以实现这一功能,代码如下:

/**
     *发送带图片资源的邮件
     * @param from      邮件发送者
     * @param to        邮件收件者
     * @param subject   邮件主题
     * @param content   邮件内容
     * @param srcPath   图片资源路径
     * @param resIds    资源id
     */
    public void sendMailWithImg(String from, String to, String subject, String content,String[] srcPath,String[] resIds){
          
   
        if(srcPath.length!=resIds.length){
          
   
            System.out.println("发送失败!");
            return;
        }
        try {
          
   
            MimeMessage mimeMessage=javaMailSender.createMimeMessage();
            MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content);
            for(int i=0;i<srcPath.length;i++){
          
   
                FileSystemResource res=new FileSystemResource(new File(srcPath[1]));
                helper.addInline(resIds[i],res);
            }
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
          
   
            e.printStackTrace();
        }
    }

再发送邮件时分别传入图片资源和资源id,通过FileSystemResource构造静态资源,然后调用addInLine方法将资源加入到邮件对象中。 接下来在测试类中添加如下方法进行测试:

经验分享 程序员 微信小程序 职场和发展