问题场景: 在一个系统的流程节点中 用户点击后发现查不到下一个流程节点,后台查看Linux日志,报SMTP的错误

错误原因: 由于流程走向下一个节点需要发送邮件,这个 500 5.1.1 报的是邮件地址不正确,并不存在该邮件地址,进而报发送错误。

解决方案:

1、 必须查出哪个用户的邮件地址有问题,也就是必须过滤掉可用的邮件,用排除法,我这里的log日志有几百行的发送记录,如果直接找是搞不定的。

2、 我将其这几百行关于发送方法的记录copy出来,放在一个文本中,根据数据的特点,用IO进行过滤。

这里是我写的IO代码,File文件行处理即可。

public class GrepLine {public static void FileOperateTest() throws IOException {File dfile = new File("E:\\mailerror.txt");FileReader fr = new FileReader(dfile);BufferedReader br = new BufferedReader(fr);File writeFile = new File("E:\\writeFile\\" + dfile.getName());// 新建文件if (!writeFile.exists()) {writeFile.createNewFile();}FileWriter fw = new FileWriter(writeFile);BufferedWriter bw = new BufferedWriter(fw);int linenum = 0;String str = null;try {while ((str = br.readLine()) != null) {// 这里对每行数据进行操作if (str.length() > 15) {StringBuffer newStr = new StringBuffer();int i = 0;newStr.append("'");for (char c : str.toCharArray()) {i++;if (c == '@'){newStr.append("',");newStr.append(" \n ");break;}newStr.append(c);if (i > 15)break;}if (i < 15)str = newStr.toString();elsestr = "";} elsestr = "";bw.write(str);if (linenum++ == 100) {bw.flush();linenum = 0;}}} catch (Exception e) {// TODO: handle exception} finally {// 注意先关闭写入流 并且buffer缓存流必须最先关闭,不然就会报错,后再关闭读取流,记住先打开的后关闭if (bw != null)bw.close();if (fw != null)fw.close();if (fr != null)fr.close();if (br != null)br.close();}}public static void main(String[] args) {try {FileOperateTest();System.out.println("过滤成功!");} catch (IOException e) {e.printStackTrace();}}
}

这样执行发现,成功发送了用户是哪些

然后在数据库中进行过滤,你肯定知道你这个SMTP邮件错误产生取的要发送的用户列表的,我这里是从流程历史表中取的

一过滤查找,用PLSQL进行过滤

SELECT FH.APPROVER_EMP, FH.Approver_Name_EngFROM FLOW_HISTORY FHWHERE BASE_UID = '190700000578'AND FH.APPROVER_DEPT = '000000003000'AND FH.APPROVER_NAME_ENG NOT IN(SELECT S.ALTERNATE_NAMEFROM USER_DETAILS SWHERE S.REAL_NAME IN('tcheng', 'yhuang', 'lshuang', 'wye', 'ybai', 'yzhang4','ttzhou', 'tfzhou', 'cftan', 'lhyan', 'yliu1', 'jliu3','apren', 'dsliao', 'sqxie', 'zlyu', 'yxzhang', 'mxliu','swang', 'ylniu', 'gccheng', 'xfzeng')))

查出最终有两个用户已离职,邮箱被注销,当在该系统中他的账户仍然还在启用,在业务中涉及到他们两个人就的邮件发送就出现该 BUG了。

其实这种在中小公司是很常见的,数千人的公司,人资系统将其员工注销了,当可能未与其他的业务系统对接,其他业务系统运行该员工相关信息导致出现错误。

class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 recipient is not exist相关推荐

  1. com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User

    使用springboot集成的邮件发送功能,参考了文章:https://blog.csdn.net/gfd54gd5f46/article/details/77414560 无论是SimpleMail ...

  2. SpringBoot使用JavaMailSender发送邮件:com.sun.mail.smtp.SMTPSendFailedException: 451 MI:SFQ 163 smtp7

    SpringBoot使用JavaMailSender发送邮件时,报错如下: 2020-08-08 07:32:21,237 ERROR --- [http-nio-8080-exec-1] cn.co ...

  3. com.sun.mail.smtp.protected void rcptTo() 方法

    RFC 822 RFC 822是电子邮件的标准格式,电子邮件除了是由一个Internet用户传递给另一个用户的信息之外,还必须包含附加的服务信息,这两个部分加在一起叫做电子邮件的标准格式,外文简称RF ...

  4. com.sun.mail.smtp.SMTPSendFailedException:554 5.2.0 STOREDRV.Submission.Exception

    使用outlook发送邮件报异常:com.sun.mail.smtp.SMTPSendFailedException:554 5.2.0 STOREDRV.Submission.Exception 我 ...

  5. mail.smtp.auth.ntlm.domain

    我尝试用本地网络中的java发送电子邮件,使用微软交换服务器 有我的代码: import java.io.UnsupportedEncodingException; import java.util. ...

  6. com.sun.mail.util.MailConnectException: Couldn't connect to host异常解决

    最近在做一个接口项目,需要捕获所有的异常信息,并发送邮件给管理员.使用了JavaMail来实现,然后发现在本地(windows环境)上可以正常发送邮件,而放到了linux环境上就无法发送邮件.相关错误 ...

  7. 用MyEclipse测试发送email时报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

    java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream的异常时, 是因为MyEclipse8.5自带的javamail版本较 ...

  8. Maven ArtifactDescriptorException: Failed to read artifact descriptor for com.sun.mail 异常

    解决办法: 1.找到你的本地maven仓库 删除com/sun/mail下的所有文件. 2.右击项目 选择maven→updateProject 即可 坐等错误提示消失.

  9. WordPress插件-WP Mail SMTP

    WordPress 电子邮件 SMTP 寄件插件 在您的WordPress站点上遇到了无法发送邮件的问题?您并不孤单.目前有超过200万个网站正在使用WP Mail SMTP来可靠地发送邮件. 我们的 ...

最新文章

  1. 如何对DevOps数据库进行源代码控制
  2. 面试两个星期来的一点体会
  3. 解决 Illegal DefaultValue null for parameter type integer 异常
  4. redis 缓存击穿 看一篇成高手系列 三
  5. python变量和对象,切片列表元祖
  6. vue父组件引用子组件方法显示undefined问题原因及解决方法
  7. html中增加一个播放器,从零实现一个自定义 HTML5 播放器
  8. 外贸SOHO具备的素质
  9. HF-LPX30 LPX20
  10. 可汗学院公开课——统计学学习:12-34
  11. (纪录片)鸟瞰中国 China from Above
  12. 双线macd指标参数最佳设置_经典实用的双线MACD指标
  13. java 视频边下边播,VideoViewDemo android 播放器,支持边下边播 238万源代码下载- www.pudn.com...
  14. jBPM4的运行期环境
  15. 苹果的新技术3D Touch与以往的“长按屏幕”有何区别?
  16. 手机用户对手机游戏的偏好调查
  17. 【linux】查看服务器的GPU 谁(用户)在使用
  18. 天地超云高温一体机的耐热秘诀
  19. 【正点原子FPGA连载】 第一章 MPSoC简介 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  20. Spring官方文档中文翻译

热门文章

  1. 武汉大学计算机学院博士几年,计算机学院博士生申请答辩资格条件
  2. 176310 Can’t place multiple pins assigned to pin location Pin_K22(IOPAD_X77_Y33_N14)(FPGA编译出现复用引脚)
  3. $GOPATH/go.mod exists but should not
  4. tbook10s换linux,【台电Tbook10s使用测试】硬件配置|驱动适配|续航_摘要频道_什么值得买...
  5. Java基础 DAY12
  6. jsonPath解析测试
  7. 计算机打印机提示无法打印,打印机无法打印_打印机无法打印怎么办【步骤|图文教程】-太平洋IT百科...
  8. shiro手机无状态登录访问和电脑端登录访问两种方式处理
  9. MyBatis 如果不存在则插入
  10. 个人收藏系列之360个人图书馆 轻松解除网页防复制难题