springboot发送邮件(Mail)笔记

使用场景

注册验证,注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的
网站营销,公司运营做活动的时候,提前几天给用户发邮件,提醒老用户在活动时间参加活动。
安全防线, 一个网站好久不用的时候,会忘记密码,这个时候需要找回密码,很多种找回方式,最常用的找回方式就是通过邮箱找回密码。
首先,在网站输入邮箱,系统会根据注册的邮箱发送一封邮件,根据邮件中的地址,可以重新设置新的密码。
触发机制, 定时邮件的发送,计算机忘记关机,发送一个特殊的邮件,让计算机自动关机。
提醒,监控告警, 如果系统没有监控,将是一种灾难性的事件,系统被实时的监控起来,出了问题,第一时间通知到开发人员,在事态没有扩散,影响最小的时候把问题解决掉。

邮件发送原理

邮件传输协议(早期):
SMTP协议:简单传输协议,原地址到目标地址传输的规范,重要特点,能在传送中接力传送邮件,
POP3协议:从邮件服务器上下下载协议。
后期增加的协议:
IMAP协议:对POP3协议的补充
Mime协议:二进制有关
邮件发送流程:
在这里插入图片描述

实战

依赖

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

配置文件:
application.yaml配置文件

spring:
  mail:
    host: smtp.qq.com
    username: //账户记得加后缀qq.com
    password: //授权码不是密码
    default-encoding: UTF-8

简单(文本)邮件

/**
 * 参数:
 * 发送给谁
 * 发送主题
 * 发送内容
 */
@Service
public class MailService {
    @Value("${spring.mail.username}")//注意加花括号
    private String from;
    @Autowired
    private JavaMailSender javaMailSender;//不要new
    public void sendSimpleMail(String to,String subject,String content)
    {
        SimpleMailMessage message=new  SimpleMailMessage();
                message.setTo(to);
                message.setSubject(subject);
                message.setText(content);
                message.setFrom(from);
               javaMailSender.send(message);
    }
}

测试

  @Test
    void test1()
    {

            mailService.sendSimpleMail("xxxxxxxxxxx@qq.com","测试邮件","hellow,这是帝封邮件!");
System.out.println("发送成功!");
    }

常犯的错误:
如果交给spring管理就用@Autowired注入,new 的话为空
HTML文件邮件()

 public void sendHTMLMail(String to,String subject ,String content) throws MessagingException {
        MimeMessage mimeMessage= javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper =new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(content,true);
        mimeMessageHelper.setFrom(from);
        javaMailSender.send(mimeMessage);
    }

带附件的邮件

 public void sendFileMail(String to,String subject ,String content,String filePath) throws MessagingException {
        MimeMessage mimeMessage= javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper =new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(content,true);
        mimeMessageHelper.setFrom(from);
        FileSystemResource file=new FileSystemResource(new File(filePath));
        String fileName=file.getFilename();
        mimeMessageHelper.addAttachment(fileName,file);//如果多个邮件批量发,参数设为数组,遍历数组多次执行mimeMessageHelper.addAttachment(fileName,file)
        javaMailSender.send(mimeMessage);
    }

带图片的邮件

  public void sendPactureMail(String to,String subject ,String content,String srcPath,String srcId) throws MessagingException {
        MimeMessage mimeMessage= javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper =new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(content,true);
        mimeMessageHelper.setFrom(from);
        FileSystemResource file=new FileSystemResource(new File(srcPath));

        mimeMessageHelper.addInline(srcId, file);
        javaMailSender.send(mimeMessage);
    }

模板邮件
thymeleaf依赖
写html(thymeleaf),
使用TemplateEngine 解析HTML,Context(import org.thymeleaf.context.Context;)设置参数

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好,感谢您的注册,这是一封验证邮件</h1>
<!--/*@thymesVar id="id" type=""*/-->
<a href="#" th:href="@{https://www.baidu.com/{id}(id=${id})}">激活账号</a>
</body>
</html>
 @Resource
    private TemplateEngine templateEngine;
    @Test
    void test4()
    {
Context context=new Context();
context.setVariable("id","11");
String content=templateEngine.process("index.html",context);
        try {
            mailService.sendHTMLMail("xxxxxxx@qq.com","测试邮件",content);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        System.out.println("发送成功!");
    }

异常的处理
使用loginfo打印参数等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值