栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot发送邮件(Mail)笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot发送邮件(Mail)笔记

使用场景

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

邮件发送原理

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

实战

依赖

 
            org.springframework.boot
            spring-boot-starter-mail
        

配置文件:
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;)设置参数




    
    Title


你好,感谢您的注册,这是一封验证邮件

激活账号
 @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打印参数等

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号