基于node的imap接受163邮箱报错的解决办法
NO SELECT Unsafe Login Please contact kefu@188.com for help 、node imap 、163
基于node的imap接受163邮箱报错的解决办法-MakerLi

在使用163邮箱开发,获取邮箱右键内容时,提示:xm002 NO SELECT Unsafe Login. Please contact kefu@188.com for help。

如果未登录邮箱进行授权第三方登录权限的话,会受到一封阻止邮件。

imap连接提示Unsafe Login,被阻止的收信行为。

但是网络给的解决方法2014年就在用而且已经过时了。

正确的添加id的方法只有java代码的。示例在这

那么node imap需要接受163邮箱怎么办呢?

imap是基于RFC 2971 协议,我们可以从中看出是需要一个id的信息。

ID ("name" "sodr" "version" "19.34" "vendor" "Pink Floyd Music Limited")
所以在node imap源码中 我们需要在发送user和password之后接着发送一个id的字符串就可以正常接收邮件了

下面是我们基于imap优化的一个模块,可以使用npm安装它

npm i imap-mkl

之后的使用方式和以前一样,163邮箱需要注意的是新增了一个id字段

var imap = new Imap({
  user: 'mygmailname@163.com',
  password: 'mygmailpassword',
  host: 'imap.163.com',
  id:{
      name: 'myemail',
      version: '1.0.0',
      vendor: "myclient",
      "support-email": config.user,
    },
  port: 993,
  tls: true
});