资讯详情

SpringBoot整合邮件发送

文章目录

  • 邮件
    • 发送简单的邮件
    • 多组件邮件(附件、复杂文本)发送

邮件

springboot我们来谈谈邮件系统集成第三方技术的第三部分。java程序的基本操作,springboot整合javamail其实就是简化发展。不熟悉邮件的朋友可以先学习javamail的基础操作,再来看这一部分内容才能感触到springboot整合javamail简化了哪些操作?简化多码?其实差别不大,只是格式而已。

在学习邮件发送之前,先了解三个概念,这些概念规范了邮件操作过程中的标准。

  • SMTP(Simple Mail Transfer Protocol):用于简单邮件传输协议,电子邮件传输协议
  • POP3(Post Office Protocol - Version 3):用于电子邮件的标准协议
  • IMAP(Internet Mail Access Protocol):互联网新闻协议,是的POP3的替代协议

简单说就是SMPT是发邮件的标准,POP三是收邮件的标准,IMAP是对POP3的升级。我们制作程序中操作邮件,通常是发邮件,所以SMTP是使用的重点,大部分邮件都是通过邮件客户端完成的,所以开发邮件的代码很少。除非要阅读邮件内容,然后分析,统一处理邮件功能。例如HR邮箱收到求职者的简历,可以统一阅读。但是为什么不制一个独立的简历交付系统呢?因此,这是一个奇怪的需求,因为如果你想收到电子邮件,你必须规范发送电子邮件的人的写作格式。这对强者来说有点困难,而且很容易收到外部攻击。你不能用白名单件。如果你能用白名单收集电子邮件并分析电子邮件,最好为白名单中的人开发一个系统,这样更安全。简言之,这是鸡肋。开始学习springboot如何整合javamail发送邮件。

发送简单的邮件

:导入springboot整合javamail的starter

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-mail</artifactId> </dependency> 

:配置邮箱登录信息

spring:   mail:     host: smtp.126.com     username: test@126.com     password: test 

java该程序仅用于发送电子邮件,电子邮件的功能是由电子邮件供应商提供的,因此它使用他人的电子邮件服务来配置相应的信息。

host配置提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置smtp的协议。

password不是邮箱账号的登录密码,而是邮件供应商提供的加密密码,也是为了保证系统的安全。否则,外部人员通过地址访问下载配置文件,直接获取电子邮件密码很大的安全隐患。每个邮件供应商提供的获取密码的方式不同,这里省略。您可以在邮件供应商的设置页面上找到POP3或IMAP找到相应的获取位置。qq仅供参考的邮箱服务如下:

在这里插入图片描述

:使用JavaMailSender邮件发送到接口

@Service public class SendMailServiceImpl implements SendMailService { 
             @Autowired     private JavaMailSender javaMailSender;      //发送人     private String from = "test@qq.com";     //接收人     private String to = "test@126.com";
    //标题
    private String subject = "测试邮件";
    //正文
    private String context = "测试邮件正文内容";

    @Override
    public void sendMail() { 
        
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from+"(小甜甜)");
        message.setTo(to);
        message.setSubject(subject);
        message.setText(context);
        javaMailSender.send(message);
    }
}

​ 将发送邮件的必要信息(发件人、收件人、标题、正文)封装到SimpleMailMessage对象中,可以根据规则设置发送人昵称等。

发送多组件邮件(附件、复杂正文)

​ 发送简单邮件仅需要提供对应的4个基本信息就可以了,如果想发送复杂的邮件,需要更换邮件对象。使用MimeMessage可以发送特殊的邮件。

@Service
public class SendMailServiceImpl2 implements SendMailService { 
        
    @Autowired
    private JavaMailSender javaMailSender;

    //发送人
    private String from = "test@qq.com";
    //接收人
    private String to = "test@126.com";
    //标题
    private String subject = "测试邮件";
    //正文
    private String context = "<img src='ABC.JPG'/><a href='https://www.itcast.cn'>点开有惊喜</a>";

    public void sendMail() { 
        
        try { 
        
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message);
            helper.setFrom(to+"(小甜甜)");
            helper.setTo(from);
            helper.setSubject(subject);
            helper.setText(context,true);		//此处设置正文支持html解析

            javaMailSender.send(message);
        } catch (Exception e) { 
        
            e.printStackTrace();
        }
    }
}

package com.example.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.internet.MimeMessage;
import java.io.File;

@Service
public class SendMailSercive { 
        
    @Autowired
    private JavaMailSender javaMailSender;

    //发送人
    private String to = "xmg665@126.com";

    //接收人
    private String from = "aaaaaa@qq.com";
// private String to = "bbbbbbb@qq.com";

    //标题
    private String subject = "测试邮件";
    //正文
    private String context = "测试邮件正文内容";
    //正文
    private String context2 = "<img src='https://img1.baidu.com/it/u=2476734823,214005944&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500' /><a href='https://www.baidu.com'>测试富文本</a>";

    public void sendMail() { 
        
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from+"(小甜甜)");
        message.setTo(to);
        message.setSubject(subject);
        message.setText(context);
        javaMailSender.send(message);
    }

    public void sendMail2() { 
        
        try { 
        
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message);
            helper.setFrom(from+"(小甜甜)");
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(context2,true);

            javaMailSender.send(message);
        }catch (Exception e){ 
        
            e.printStackTrace();
        }
    }

    public void sendMail3() { 
        
        try { 
        
            MimeMessage message = javaMailSender.createMimeMessage();
// 允许添加附件
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from+"(小甜甜)");
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(context2,true);

            //添加附件
// File f1 = new File("resources\\application.yml");
            File f2 = new File("E:\\cgw\\gitee\\spring-boot-tutorial\\springboot_0021_springboot_email\\src\\main\\resources\\ABC.jpg");

// helper.addAttachment(f1.getName(),f1);
            helper.addAttachment("test.png",f2);

            javaMailSender.send(message);
        }catch (Exception e){ 
        
            e.printStackTrace();
        }
    }

}

  1. springboot整合javamail其实就是简化了发送邮件的客户端对象JavaMailSender的初始化过程,通过配置的形式加载信息简化开发过程

标签: cgw智能高低浓度甲烷传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台