美文网首页
记一次 node 发送邮件超时查错

记一次 node 发送邮件超时查错

作者: VioletJack | 来源:发表于2019-02-27 00:29 被阅读0次

之前做了一个内部系统需要实现邮件发送功能。记录一下错误问题。

描述

node 项目使用 nodeMailer 来发送 ke.com 的邮件。

在本地运行项目发送邮件没有问题,而在线上环境发送邮件报错。这个问题困扰了很久。

邮件配置

export default {
  host: 'mail.ke.com',
  port: 587,
  auth: {
    user: "xxxxxxx",
    pass: "**********"
  }
}

错误日志

{
  "request_time": "2019-01-15 20:29:59",
  "index_day": "2019-01-15",
  "channel": "application",
  "message": {
    Error: Connection timeout
    at SMTPConnection._formatError(/data0/www / htdocs / whale.ke.com / node_modules / nodemailer / lib / smtp - connection / index.js: 606: 19)
    at SMTPConnection._onError(/data0/www / htdocs / whale.ke.com / node_modules / nodemailer / lib / smtp - connection / index.js: 579: 20)
    at Timeout._connectionTimeout.setTimeout(/data0/www / htdocs / whale.ke.com / node_modules / nodemailer / lib / smtp - connection / index.js: 261: 18)
    at ontimeout(timers.js: 469: 11)
    at tryOnTimeout(timers.js: 304: 5)
    at Timer.listOnTimeout(timers.js: 264: 5),
    code: 'ETIMEDOUT',
    command: 'CONN'
  },
  "context": "/data0/www/htdocs/whale.ke.com/dist/actions/api/addWeekly.js:139:23"
}

结果是报了超时错误。

解决过程

对于这个错误我一直不解,不知道服务器上出了什么问题。下面是我自己的一些猜测。

  • 是否是由于本地环境是 HTTP 协议而生产环境上是 HTTPS 协议。
  • 是否是生产服务器上有防火墙屏蔽了发邮件的行为?
  • 是否是我发送邮件配置不对?
  • 是不是同事提供的邮箱地址和端口不对呢?

最后通过同事帮助才发现是由于 mail.ke.com 没有办法 ping 通,换成 lianjia.ke.com 就可以了。

注:之后我也发现在 nodeMailer 中还有一个调试选项,可以在服务器端打印出发邮件具体步骤。

教训

给我的经验教训是:

  • 遇到服务器方面的问题必须要对这方面知识有所了解,不能靠猜黑盒。
  • 对于软件开发者而言,网络知识非常重要。
  • 遇到问题在Google不出来,实在无法解决的时候,不要死磕,要多向他人请教。
  • 让我了解了堡垒机的操作流程、node 输出日志工具 log4js、负载均衡下多窗口监控 log 等知识和经验。

最后

好吧,我承认这篇文章很水,但还是要坚持日更,保持习惯!

相关文章

网友评论

      本文标题:记一次 node 发送邮件超时查错

      本文链接:https://www.haomeiwen.com/subject/gbdtuqtx.html