【问题标题】:Nodemailer SMTP Server receives e-mail but doesn't respond anythingNodemailer SMTP 服务器收到电子邮件但没有任何响应
【发布时间】:2021-05-15 18:34:24
【问题描述】:

我有一个用于接收电子邮件的简单脚本,即使它接收电子邮件并打印正常,但不幸的是,它没有响应发送服务器,(没有 250OK)因此发送服务器一直发送相同的 e - 邮件(重试)

需要回复什么或可能有什么问题?

在此设置中,此代码在我的本地网络 (OsX) 中运行,我的路由器的端口 25 转发到我的机器。

const SMTPServer = require("smtp-server").SMTPServer;
const parser = require("mailparser").simpleParser

const server = new SMTPServer({

  onData(stream, session, callback) {
    parser(stream, {}, (err, parsed) => {

      if (err){
        console.log("Error:" , err)
      }
      
      eMailParse(parsed)
      stream.on("end", callback)

    })
    
  },
  disabledCommands: ['AUTH']

});

server.listen(25, "192.168.50.20")

console.log("Mail Server Running");


function eMailParse(parsed){
    const {headers, from, to, cc, date, html, text, messageId} = parsed;

    console.log("\n//############# New Mail #############\n")
    console.log(messageId)//Unique Mail ID;
    console.log("\n//$$$$$")
    console.log(from)
    console.log(to)
    console.log(cc)
    console.log(date)
    console.log(text)
    console.log("//====")
    console.log(html)
}

Gmail 的回复

接收服务器不接受我们的连接请求。在https://support.google.com/mail/answer/7720 [dc-133a13304d09.*******.fun 了解更多信息。 nn.nnn.nn.nn: 超时]

Telnet 响应

421 超时 - 关闭连接 连接被外部主机关闭。

【问题讨论】:

  • 除非我遗漏了一些明显的东西,否则不是用于发送电子邮件的 SMTP 服务器吗?电子邮件客户端连接到 SMTP 服务器,发送电子邮件,然后 SMTP 服务器将其发送出去。要接收来自 Google 的电子邮件,我认为您需要一个 IMAP 服务器。类似wildduck
  • 其实它是正确的,但它接收电子邮件,我不能说我完全理解发生了什么。在一篇文章中它说“一个 SMTP 接收来自其他电子邮件服务器或电子邮件客户端的电子邮件”
  • 我的理解是;它作为中继工作,因此,接收电子邮件并发送到其他地方,它应该返回中继邮件服务器的答案,但是我不是中继,而是拦截电子邮件,我想返回 250 个传输答案服务器。
  • 是的,根据this,smtp 服务器最初显然接受了电子邮件,然后将其转发到 imap/pop 服务器。无论如何,我对此无能为力,抱歉:)

标签: javascript node.js email smtp nodemailer


【解决方案1】:

过了一会儿,我又试了一会儿,终于找到了解决办法。

这部分不工作

eMailParse(parsed)
stream.on("end", callback) //on("end") is never triggered

相反;

eMailParse(parsed)
callback()

像魅力一样工作。

【讨论】:

    【解决方案2】:

    我最近遇到了同样的问题。我找到了这个线程并且答案也对我有用,但后来我发现了真正的问题 - 'end' 事件的侦听器应该立即附加在 onData 回调中,而不是在解析器回调中。这是解决方案:

    const SMTPServer = require("smtp-server").SMTPServer;
    const parser = require("mailparser").simpleParser
    
    const server = new SMTPServer({
    
      onData(stream, session, callback) {
        stream.on("end", callback)
        parser(stream, {}, (err, parsed) => {
          if (err){
            console.log("Error:" , err)
          }
          
          eMailParse(parsed)
        })
      },
      disabledCommands: ['AUTH']
    });
    
    server.listen(25, "192.168.50.20")
    
    console.log("Mail Server Running");
    
    
    function eMailParse(parsed){
        const {headers, from, to, cc, date, html, text, messageId} = parsed;
    
        console.log("\n//############# New Mail #############\n")
        console.log(messageId)//Unique Mail ID;
        console.log("\n//$$$$$")
        console.log(from)
        console.log(to)
        console.log(cc)
        console.log(date)
        console.log(text)
        console.log("//====")
        console.log(html)
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2019-06-02
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多