Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法使用imap连接到Gmail_Node.js_Gmail Imap - Fatal编程技术网

Node.js 无法使用imap连接到Gmail

Node.js 无法使用imap连接到Gmail,node.js,gmail-imap,Node.js,Gmail Imap,我正在尝试使用imap查看gmail收件箱中收到的电子邮件内容,但当我运行代码时,出现以下错误 错误 Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed at doWrite (_stream_writable.js:427:19) at clearBuffer (_stream_writable.js:551:7) at Socket.Writable.uncork (

我正在尝试使用
imap
查看gmail收件箱中收到的电子邮件内容,但当我运行代码时,出现以下错误

错误

Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
    at doWrite (_stream_writable.js:427:19)
    at clearBuffer (_stream_writable.js:551:7)
    at Socket.Writable.uncork (_stream_writable.js:325:7)
    at JSStreamSocket.doWrite (internal/js_stream_socket.js:162:17)
    at JSStream.onwrite (internal/js_stream_socket.js:20:57)
    at Socket.ondata (internal/js_stream_socket.js:64:22)
    at Socket.emit (events.js:210:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:290:11)
    at Socket.Readable.push (_stream_readable.js:224:10) {
  code: 'ERR_STREAM_DESTROYED',
  source: 'socket'
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: self signed certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1321:34)
    at TLSSocket.emit (events.js:210:5)
    at TLSSocket._finishInit (_tls_wrap.js:794:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:608:12)
    at Socket.ondata (internal/js_stream_socket.js:64:22)
    at Socket.emit (events.js:210:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:290:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:182:23)
Emitted 'error' event on Connection instance at:
    at TLSSocket._onError (C:\Users\debdutgoswami\node_modules\imap\lib\Connection.js:151:10)
    at TLSSocket.emit (events.js:210:5)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'DEPTH_ZERO_SELF_SIGNED_CERT',
  source: 'socket'
}
代码

var Imap=require('Imap'),
检查=要求('util')。检查;
var imap=新的imap({
用户:'mygmailname@gmail.com',
密码:“MygMail密码”,
主持人:“imap.gmail.com”,
港口:993,
tls:对
});
函数openInbox(cb){
imap.openBox(“收件箱”,true,cb);
}
imap.once('ready',function(){
openInbox(函数(错误,框){
如果(错误)抛出错误;
变量f=imap.seq.fetch('1:3'{
正文:“HEADER.FIELDS(从主题日期到主题日期)”,
结构:对
});
f、 on('message',函数(msg,seqno){
console.log('Message#%d',seqno);
变量前缀='(#'+序号+)';
msg.on('body',函数(流,信息){
var缓冲区=“”;
stream.on('data',函数(块){
buffer+=chunk.toString('utf8');
});
stream.once('end',function(){
console.log(前缀+'Parsed header:%s',检查(Imap.parseHeader(缓冲区));
});
});
msg.once('attributes',函数(attrs){
日志(前缀+属性:%s',检查(属性,假,8));
});
msg.once('end',function(){
console.log(前缀+'Finished');
});
});
f、 一次('error',函数(err){
log('Fetch error:'+err);
});
f、 一次('end',function()){
log('Done fetching all messages!');
imap.end();
});
});
});
imap.once('error',函数(err){
控制台日志(err);
});
imap.once('end',function(){
console.log(“连接结束”);
});
imap.connect();

很长一段时间以来,我都有同样的问题。。。这里真正的问题是,有人投诉自签名证书,我找到了一条出路。
就在您的
tls:true
下,这是自签名证书,在您的
var imap=new imap({//inside here})
中添加一行:
tlsOptions:{rejectUnauthorized:false}

,代码的其余部分是正确的

您可能还必须在帐户上允许“不太安全的应用程序”,请参阅

这会给我“错误无效凭据(失败)”