一个中文害我加了两天班

Java3y

共 2925字,需浏览 6分钟

 ·

2023-04-11 12:19

前几天有股东找我,说项目已经启动了,按着文档去操作但收不到邮件啊。

我一想,这肯定是邮件的配置有问题吧,是不是pass(授权码)没有配置正确啊,这绝大部分刚开始对接邮件都是这个问题(我的代码是不可能背锅的)。

为了保险起来,我说看下日志吧。然后他给我发了个截图:

95806b9fdccedfa67e21001beafdc3f8.webp

截图肯定看不了啊,我让他把文字复制在微信给我,但是我一对比,图片和文字是对不上的,文字是少了日志的(估计是微信截断了)

6303804c8238fc7f35853c09f36917ce.webp

有了日志文件以后,我很轻易地发现,是这条消息被去重了。(语雀文档已经写了这种情况了,估计他也没细看)

a218f84488a974cc5d33d74fa2cfe29c.webp

后来去掉去重的逻辑了以后,还是报错了,但这个问题也好查,一看就知道是附件的链接没填对

509cecb97462e895048f10c1ea5d1c4b.webp

把附件的链接去掉了以后,还是报错了,遇到了个新问题,这问题是我从来没有见过的;我发现我用他的模板去发送消息是正常的,那很明确就是环境的问题了。

      
      ERROR c.java3y.austin.handler.handler.impl.EmailHandler - EmailHandler#handler fail!cn.hutool.extra.mail.MailException: MessagingException: 502 Invalid input from 125.22.222.22 to newxmesmtplogicsvrszb6-0.qq.com
 at cn.hutool.extra.mail.Mail.send(Mail.java:393)
 at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416)
 at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:194)
 at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:176)
 at com.java3y.austin.handler.handler.impl.EmailHandler.handler(EmailHandler.java:60)
 at com.java3y.austin.handler.handler.BaseHandler.doHandler(BaseHandler.java:61)
 at com.java3y.austin.handler.pending.Task.run(Task.java:66)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)
Caused by: javax.mail.MessagingException: 502 Invalid input from 125.22.222.22 to newxmesmtplogicsvrszb6-0.qq.co
2b465d0cb1526429a0d397f9d89a9a92.webp

而环境的问题我归纳几点:

1、首先怀疑是网络问题,是不是开了VPN,是不是网不通

2、接着怀疑是不是动了我代码,没理由相同的代码会有不一致的结果。

3493dda2ea1cca908b90aba7c9978a29.webp

这问题在这就僵住了,他说不是网络的问题,也没有动我的代码,那还能是什么问题呢?那只能远程看看了(但我对这没有信心,对着报错查了半天都没有啥思路,感觉网上说的都不对)

80472575fe816e0d9cdf095426ffd618.webp

后来层层debug进去,发现是connect失败了,而connect会依赖EHLO命令的返回(该命令主要用于客户端与SMTP服务器通信),该命令返回了502,正常应该是250的。

3796696f137bf63d0e808ddf63d3199e.webp

我又对比了下我的环境debug进去,看看有什么异同点:

a44eab1fb3a8fb1fa242022ea8cc4a01.webp发现差别就在于,他的hostname是中文

d40407582d354c0bba9923fc5ebac0a4.webp

后来,我去细查了一下,EHLO命令确实会对domain有限制。https://datatracker.ietf.org/doc/html/rfc5321#section-4.1.1.1

6e917b1a3325fbe9704063a6426cd983.webp(然而这个问题已经花了我很多时间啦)

这个问题又让我回想起初学编程,尘封多年的记忆了:

1、当年学编程的时候还提倡不用IDE,要记事本手写美言美语是提高编程能力,一些语法的错误(可能是符号的问题;,)在记事本压根看不出来,然后查个大半天。

2、以前不习惯用英文,一些目录或者配置可能都按照习惯用中文或者一些特殊字符,自然就会出现奇奇怪怪的问题(查个半天)

3、各种编码问题(ISO8859-1转GKB,GKB转UTF-8,数据库的编码...)

这些问题都不复杂,但是很折腾人,也很搞人心态。但其实很多是可以自己尽量避免:变量/目录/配置简单(避免关键字/中文/特殊字符)会在隐形间给你省很多事。

遵守规则,大道至简。

------------------

还是有很多同学不懂得正确提问,怀着不正确的提问姿势,进入职场迟早是要吃亏的

我始终认为提问这种事,是要将心比心的,在提问之前,把自己代入到回答者中,尝试以“回答者”的角度看待自己的问题,能不能让人看明白

在我的浏览器收藏夹里一直有个仓库我都保留着,大概在我大学的时候就存着了。一方面是希望自己的提问是「有效」的,一方面如果遇上那种「不懂提问」的人,我就直接给他链接先看看。

这个仓库的名称叫做:How-To-Ask-Questions-The-Smart-Way

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

推荐项目

如果想学Java项目的,我还是 强烈推荐 我的开源项目 消息推送平台Austin(8K stars) ,可以用作 毕业设计 ,可以用作 校招 ,可以看看 生产环境是怎么推送消息 的。

仓库地址(可点击阅读原文跳转):https://gitee.com/zhongfucheng/austin

我开通了 股东服务 内容,感兴趣可以点击下方看看,主要针对的是项目哟

VIP服务

浏览 45
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报