节点 IMAP 连接 ECONNREFUSED 127.0.0.1:143
Node IMAP connect ECONNREFUSED 127.0.0.1:143
我将 NodeJs 与 imap、mailparser 和 bluebird 一起使用来读取我的 gmail 帐户的邮件,最后将它们写入 Azure 数据库。但这是我了解其工作原理的第一步。
我使用 Read email body with node js imap 中的代码并更改凭据。
当我执行 email.js 脚本时 returns 出现以下错误。
希望你能帮帮我。
曼尼谢谢,
埃里克
错误
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();
});
}
该代码似乎将 "settings to use to connect to an IMAP server" 与处理 IMAP 的 class 的实际实例混淆了。来自 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
库是 "helpful",因为远程服务器 IMAP 的默认 hostname
127.0.0.1
,其余的只是由于您的编程环境中没有类型信息。
我将 NodeJs 与 imap、mailparser 和 bluebird 一起使用来读取我的 gmail 帐户的邮件,最后将它们写入 Azure 数据库。但这是我了解其工作原理的第一步。
我使用 Read email body with node js imap 中的代码并更改凭据。
当我执行 email.js 脚本时 returns 出现以下错误。
希望你能帮帮我。
曼尼谢谢,
埃里克
错误
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();
});
}
该代码似乎将 "settings to use to connect to an IMAP server" 与处理 IMAP 的 class 的实际实例混淆了。来自 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
库是 "helpful",因为远程服务器 IMAP 的默认 hostname
127.0.0.1
,其余的只是由于您的编程环境中没有类型信息。