【问题标题】:Node IMAP connect ECONNREFUSED 127.0.0.1:143节点 IMAP 连接 ECONNREFUSED 127.0.0.1:143
【发布时间】:2020-04-14 23:55:21
【问题描述】:

我将 NodeJs 与 imap、mailparser 和 bluebird 一起使用来读取我的 gmail 帐户的邮件,最后将它们写入 Azure 数据库。但这是我了解其工作原理的第一步。

我使用来自Read email body with node js imap 的代码并更改凭据。

当我执行 email.js 脚本时,它返回以下错误。

希望你能帮帮我。

谢谢,

埃里克

错误

Connection error: Error: connect ECONNREFUSED 127.0.0.1:143
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1129:14)

email.js

var Imap = require("imap");
var MailParser = require("mailparser").MailParser;
var Promise = require("bluebird");
Promise.longStackTraces();

// Step 2: Declaring new imap object
var imapConfig = new Imap({
  user: 'myemail@gmail.com', 
  password: 'mypassword', 
  host: 'imap.gmail.com', 
  port: 993,
  tls: true,
  secure: true
});

var imap = new Imap(imapConfig);
Promise.promisifyAll(imap);

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

imap.once("ready", execute);
imap.once("error", function(err) {
    console.error("Connection error: " + err.stack);
});

imap.connect();

function execute() {
    imap.openBox("INBOX", false, function(err, mailBox) {
        if (err) {
            console.error(err);
            return;
        }
        imap.search(["UNSEEN"], function(err, results) {
            if(!results || !results.length){console.log("No unread mails");imap.end();return;}
            var f = imap.fetch(results, { bodies: "" });
            f.on("message", processMessage);
            f.once("error", function(err) {
                return Promise.reject(err);
            });
            f.once("end", function() {
                console.log("Done fetching all unseen messages.");
                imap.end();
            });
        });
    });
}


function processMessage(msg, seqno) {
    console.log("Processing msg #" + seqno);
    // console.log(msg);

    var parser = new MailParser();
    parser.on("headers", function(headers) {
        console.log("Header: " + JSON.stringify(headers));
    });

    parser.on('data', data => {
        if (data.type === 'text') {
            console.log(seqno);
            console.log(data.text);  /* data.html*/
        }
     });

    msg.on("body", function(stream) {
        stream.on("data", function(chunk) {
            parser.write(chunk.toString("utf8"));
        });
    });
    msg.once("end", function() {
        // console.log("Finished msg #" + seqno);
        parser.end();
    });
}

【问题讨论】:

    标签: node.js imap email-parsing


    【解决方案1】:

    代码似乎将“用于连接 IMAP 服务器的设置”与处理 IMAP 的类的实际实例混淆了。来自upstream example on how to use node-imap

    var Imap = require('imap'),
        inspect = require('util').inspect;
    
    var imap = new Imap({
      user: 'mygmailname@gmail.com',
      password: 'mygmailpassword',
      host: 'imap.gmail.com',
      port: 993,
      tls: true
    });
    

    但是,您的代码所做的是首先创建 IMAP 连接,如示例中所示:

    var imapConfig = new Imap({
      user: 'myemail@gmail.com', 
      password: 'mypassword', 
      host: 'imap.gmail.com', 
      port: 993,
      tls: true,
      secure: true
    });
    

    ...然后它尝试将该 IMAP 连接用作另一个连接的参数源:

    var imap = new Imap(imapConfig);
    

    我只是猜测node-imap 库是“有用的”,因为远程服务器 IMAP 的默认 hostname127.0.0.1,其余的只是您的编程环境中没有类型信息的结果.

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2021-04-15
      • 2021-01-19
      • 2018-03-13
      • 2019-12-22
      相关资源
      最近更新 更多