在节点不能正常工作时使用IMAP部分搜索gmail TO字段

时间:2014-01-17 23:31:32

标签: node.js email search imap gmail-imap

根据IMAP RFC 3501 6.4.4

  

在所有使用字符串的搜索键中,如果是,则消息与键匹配   string是字段的子字符串。匹配不区分大小写。

然而,当使用node-imap时,gmail似乎不会因为对TO字段的搜索而尊重这一点。我没有尝试过另一种编程语言,但考虑到节点模块如何发送命令,我怀疑gmail本身并不尊重与TO字段的部分匹配。

正在进行的简化示例:

var Imap = require('imap');

var imap = new Imap(
  user: 'myGmailUser',
  password: 'myGmailPassword',
  host: 'imap.gmail.com',
  port: 994,
  tls: true,
  tlsOptions: {rejectUnauthorized: false}
);

imap.once('ready', function() {
  imap.openBox('[Gmail]/All Mail', function(err, box) {

    imap.search(['TO','myGmail'], function(err, searchResult) {
      // no results
    });

    imap.search(['TO','myGmailUser@gmail.com'], function(err, searchResult) {
      // I get my messages as results
    });
  }
});

imap.connect();

查看原始邮件,我可以在标题To: myGmailUser@gmail.com中清楚地看到。混淆为什么完全匹配有效,但部分匹配却没有。

此外,在gmail内部,如果我搜索to:myGmailUser,它会返回消息,但如果我搜索to:myGmail则不会。虽然我想它会使用与IMAP不同的协议。

0 个答案:

没有答案