首页 > 其他分享 >Spring Boot通过企业邮箱发邮件被Gmail退回的问题解决方法

Spring Boot通过企业邮箱发邮件被Gmail退回的问题解决方法

时间:2023-08-23 16:25:31浏览次数:42  
标签:Spring 配置 Boot mail 企业邮箱 com SPF Gmail

这两天给我们开发的Chrome插件:Youtube中文配音增加了账户注册和登录功能,其中有一步是邮箱验证,所以这边会在Spring Boot后台给用户的邮箱发个验证信息。如果发邮件,之前的文章教程里就有,这里就不说了,着重说说这两天发现所有用Gmail注册的用户都被退件的问题。

报错现象

先来看看具体报错(如果您也碰到这种情况,那么可以看看后面的内容):

退信原因:发件人([email protected])域名的DNS记录未设置或设置错误导致对方拒收此邮件。
host gmail-smtp-in.l.google.com[142.251.10.26] said: 550-5.7.26 This mail is unauthenticated, which poses a security risk to the sender and Gmail users, and has been blocked. The sender must authenticate with at least one of SPF or DKIM. For this message, DKIM checks did not pass and SPF check for [mail.spring4all.com] did not pass with ip: [54.204.34.130]. The sender should visit https://support.google.com/mail/answer/81126#authentication for instructions on setting up authentication. k191-20020a636fc8000000b00565bcd33890si6279798pgc.848 - gsmtp (in reply to end of DATA command)
解决方案:请通知你的邮箱管理员为邮箱域名设置正确的DNS(SPF、DKIM、DMARC)记录。详细请见 http://service.exmail.qq.com/cgi-bin/help?subtype=1&&no=1000580&&id=20012

问题分析

从退信原因中Google给的链接内容非常多,大致内容就是Google针对垃圾邮件滥用邮箱等行为做的防护机制。所以,如果您要支持Gmail的话,就必须符合它所制定的身份配置要求,里面包含了:SPF配置、DKIM配置、ARC配置以及DMARC配置。

Google官方提供了一个工具:https://toolbox.googleapps.com/apps/checkmx/,可以用来检测你的一些列配置是否符合要求。您只需要输入你的邮箱域名,就可以看到如下的诊断结果:

那么多警告,显然是要慢慢解决才能不被拒收吧。。。不过那么多配置,是不是一下就晕了?

如果你懒得深入看的话,下面DD就讲一下比较快速的解决不被拒收的配置。

解决方案

不要看有那么多警告和配置内容,其实只需要把SPF配置完成,Gmail的发送就不成问题了。配置方法也很简单,就是在域名解析里加一条记录即可。

Gmail官网也给出了介绍:

但第一次也许你会跟我犯一样的错,就是直接用v=spf1 include:_spf.google.com ~all这个value了。。。其实应该要修改成你所用企业邮箱服务商的spf域名。

比如,DD这边用的是腾讯的企业邮箱,所以值要设置成:v=spf1 include:spf.mail.qq.com ~all。直观的讲,你的域名解析里需要有这样一条TXT记录:

SPF汇总

这边汇总一下,国内比较常用的企业邮箱SPF配置,如果您正好碰到类似问题,可以直接选取使用:

  • 腾讯企业邮箱:v=spf1 include:spf.mail.qq.com ~all
  • 阿里企业邮箱:v=spf1 include:spf.mxhichina.com -all
  • 网易企业邮箱:v=spf1 include:spf.163.com -all

今天的分享就到这里,希望对您有所收获!码字不易,欢迎关注、收藏、分享,支持一下。本文可以任意转载,但请注明原文链接 _

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

标签:Spring,配置,Boot,mail,企业邮箱,com,SPF,Gmail
From: https://www.cnblogs.com/didispace/p/17651978.html

相关文章

  • 任务调度工具_Spring Task在SpringBoot中使用教程
    ##SpringTask1.1介绍SpringTask是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码为什么要在Java程序中使用SpringTask?应用场景:1).信用卡每月还款提醒2).银行贷款每月还款提醒3).火车......
  • Spring BeanPostProcessor : MethodValidationPostProcessor
    概述MethodValidationPostProcessor处理bean中的JSR-303方法验证注解。比如某个bean方法使用了JSR-303注解如下:public@NotNullObjectmyValidMethod(@NotNullStringarg1,@Max(10)intarg2)当该bean的类上再使用了Spring的注解@Validated时,上面的这些方法就会是MethodValida......
  • springboot整合资源文件
    1:什么是SpringBoot?SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过==简化配置==来进一步简化Spring应用的整个搭建和开发过程。另外SpringBoot还通过继承大量框架使依赖包的版本冲突,以及引用不稳定性等问题的到了很好的解决。2:SpringBoot的优点(1)可以......
  • 基于Springboot的个人网站的设计与实现-计算机毕业设计源码+LW文档
    一、设计(论文)选题的依据1.研究背景与意义现在越来越多的人关注网站的自动化设计与开发,什么是个人网站呢?它的出现和运营究竟承载这怎样的信息?这并不是每个人都清楚的很多人无法准确的理解个人网站的优势和作用,我对网站的认识还处于相当低的程度中所以在正文开始前我想先阐述自己对......
  • SpringMVC执行流程流程版
    1.用户向服务器发送请求,请求被SpringMVC前端控制器DispatcherServlet捕获。2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI),判断请求URI对应的映射:a.不存在i.再次判断是否配置mvc:default-servlet-handlerii:如果开启default-servlet-:会先交给DispatherServl......
  • 使用 lorax 创建引导文件(boot.iso)
    简介:RedHatEnterpriseLinux的安装系统是由一个名为lorax的工具创建的。lorax 工具用于创建 Anaconda 安装程序boot.iso如以及基本的发布树和.treeinfo元数据文件。其依赖关系相当轻量级,因为它需要能够在模拟chroot中运行环境。最好从与目标相同的版本运行lora......
  • 从头到尾说一次 Spring 事务管理(器) | 京东云技术团队
    事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一。本文会从设计角度,一步步的剖析Spring事务管理的设计思路(都会设计事务管理器了,还能玩不转?)为什么需要事务管理?先看看如果没有事务管理器的话,如果想让多个操作(方法/类)处在一个事务里应该怎么做://MethodA:publicvoid......
  • Vue+SpringBoot项目分离部署踩坑记录
    昨天花了一晚上终于成功部署了个人网站,在这个过程中踩了很多坑,现在回顾总结记录一下,以免今后继续犯错误前端:Vue后端:SpringBoot数据库:Mysql一、前端1、前端项目采用Nginx进行部署,其中Nginx配置文件部分内容如下nginx.conf部分内容1server{2listen443ssl......
  • SpringMVC执行流程注解版
    下面是SpringMVC执行流程的注解版:存在的问题:·1.web.xml文件需要存在(不然Tomcat(log->GBK编码)的War包构建不成功,部署会失败).2.spring和springmvc需要加载bean会有冲突的问题,可以统一管理Bean等WebInit(代替web.xml)//代替web.xmlpublicclassWebInitextends......
  • 从头到尾说一次 Spring 事务管理(器)
    事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一。​本文会从设计角度,一步步的剖析Spring事务管理的设计思路(都会设计事务管理器了,还能玩不转?)为什么需要事务管理?先看看如果没有事务管理器的话,如果想让多个操作(方法/类)处在一个事务里应该怎么做://MethodA:publ......