首页 > 其他分享 >spring发送邮件笔记

spring发送邮件笔记

时间:2023-10-31 12:36:44浏览次数:41  
标签:String helper spring request private 报错 笔记 邮件



文章目录

  • 引入依赖
  • 配置
  • 代码
  • 附件url地址为空会不会报错
  • 接收方邮件地址错误会不会报错


引入依赖

推荐用spring集成依赖,不用一个包一个包找了。

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

配置

这里以qq为例:

spring:
  main:
    allow-bean-definition-overriding: true
  mail:
    host: smtp.qq.com
    port: 465
    protocol: smtps
    userName: [email protected]
    passWord: eyywqbcdfddd
    properties:
      mail:
        smtp:
          auth: false
          starttls:
            enable: false
            required: false

注:userName是发送方邮件地址,用自己的qq号就行。
password是授权码,这个要在qq邮箱开通下。

如果启动报错:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

那么记得加这个配置(大意是解决类再次加载的问题):

spring:
  main:
    allow-bean-definition-overriding: true

代码

javax.mail.internet.MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
helper = new MimeMessageHelper(mimeMessage, true);
URL url = new URL(request.getAttachmentUrl());
DataSource dataSource = new URLDataSource(url); // 附件地址为空会报错 MalformedURLException
helper.addAttachment(request.getAttachmentName(), dataSource); // 附件名为空不报错,会有个默认附件名
helper.setFrom(request.getFrom()); // 发送人
helper.setTo(request.getTo()); // 接收人
helper.setSubject(request.getSubject()); // 主题
helper.setText(request.getText(), true); // 正文
log.info("rest发送邮件开始"); // 这里无法toJson,会报错
mailSender.send(mimeMessage); // 不报错就是成功
log.info("rest发送邮件完成");

因为涉及到参数接收,最好弄个实体类,代码更整洁。实际mail有很多参数,但是常规来说,这些也够用了。

@Data
public class MailEntity{
private String subject;
private String from;
private String to;
private String text;
private String attachmentUrl;
private String attachmentName;
}

附件url地址为空会不会报错

会的,会报错MalformedURLException,这个在发送前的入参检查时就会报错。

接收方邮件地址错误会不会报错

不会,因为邮件是异步的,代码里的发送是发到邮件服务器,邮件服务器后续会发送给接收方,java代码肯定不能等这个反馈,所以不会报错。

但是如果地址错误,邮件的发送方会收到退回邮件。


标签:String,helper,spring,request,private,报错,笔记,邮件
From: https://blog.51cto.com/u_7341513/8103587

相关文章

  • 【面试专题】Spring篇①
    目录1.你知道Spring框架中有哪些重要的模块吗?2.谈谈你对IOC的认识。3.谈谈你对AOP的认识。4.在实际写代码时,有没有用到过AOP?用过的话是在什么地方或者什么场景下?5.Spring中的事务是如何实现的6.Transaction在哪些情况下可能会失效?7.说说你对Spring中的Bean的理解。8.......
  • java实现文件夹上传功能实例代码(SpringBoot框架)
    前言有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下一、前端如何设置上传组件并将资源上传到后台服务这里的项目框架为若依VUE版本......
  • SpringBoot中,为什么不直接使用一个Service写功能,而是Service接口+ServiceImpl实现类?
    当项目比较简单的时候,需求明确,变更不频繁或者几乎不怎么修改的时候,用第一种就好了当项目比较复杂,需求变更多的时候,用第二种比较好service层=service接口+serviceImpl实现类这种方式好处:1、解耦合2、便于扩展例如:publicinterfaceHumanService{StringgetName();}@Serv......
  • Gradle8.4构建SpringBoot多模块项目
    Gradle8.4构建SpringBoot多模块项目一、基本1、版本这个版本是Jdk8最后一个SpringBoot版本软件版本Gradle8.4SpringBoot2.7.15JDK82、Gradle基本介绍2.1、使用Wrapper方式构建好处:统一gradle的版本好处:不用安装gradle就可以使用Maven也是一样的......
  • 一文详解 springboot 项目启动时异步执行初始化逻辑
    你知道的越多,你不知道的越多点赞再看,养成习惯文章目录前言代码实现定义异步处理工具类实现java线程池新建AppInit实现ApplicationRunner接口完成启动项目时异步数据初始化前言前面的工作中,为了提高地区数据的响应时间,需要加载全国区划数据到redis中缓存起来,这个过程希......
  • 信看课堂笔记—电路若只如初见
    本节课结合我们模块经常遇到的电子元器件和电路讲解下原理和方案选型认识电阻、电容和电感以下是电阻、电容和电感的作用的简要对比表格:作用电阻电容电感限制电流通过阻碍电流流动(欧姆定律I=U/R)阻止直流电流通过随频率增加而阻碍电流调整电路参数无法调整电路参数调整电路的频率响......
  • 高级数据库建模与设计笔记
    1、需求文档2、数据流图3、数据字典4、概要设计5、逻辑设计(本课程只到这一步) 数据流图:方框里是角色,圆里是动作,箭头是信息的变换,长等号上面是待修改的信息。数据字典:是个列表。它不只说明字段,而是对数据流中各个元素进行说明。 新感悟:设计表时,面对数据流图,应该先看靠近......
  • 第二章读书笔记——雷凯化
        22信计1班雷凯化学号2022310143043  03运行超市抹零行为a=float(input('扫描的第一个商品价格:'))b=float(input('扫描的第二个商品价格:'))c=float(input('扫描的第三个商品价格:'))d=a+b+cprint('总计:',int(d))print('from22信计1班雷凯化')print('......
  • 数论学习笔记
    整除若\(a/b(b\ne0)\)为整数,则称\(b\)整除\(a\),记作\(b\mida\)。若\(a/b\)和\(c/b\)的余数相等,则称\(a,c\)模\(b\)同余。同余关于同余,有以下命题等价:\(a\)和\(b\)是模\(d\)同余的。存在某个整数\(n\),使\(a=b+nd\)。\(d\)整除\(......
  • 《代码大全2》阅读笔记
    错误处理程序1.处理预料中可能要发生的错误,在程序的正确性与健壮性间平衡;2.方法:返回中立值、换用下一个正确的数据、返回与前次相同的数据、换用最接近的合法值、把警告信息记录到日志文件中、返回一个错误码、调用错误处理子程序或对象、当错误发生时显示出错信息、用最妥当的......