如何在邮件监听器2中读取邮件文本?

时间:2017-06-14 16:44:52

标签: protractor

conf.js

var MailListener = require("mail-listener2");
        var mailListener = new MailListener({

            username: "*****@office365.com",
            password: "******",
            host: "outlook.office365.com",
            port: 993, // imap port
            tls: true,
            fetchUnreadOnStart: true,
            tlsOptions: {rejectUnauthorized: false},
            mailbox: "INBOX",
            searchFilter: "UNSEEN",
            markSeen: true
        });

        mailListener.on("server:connected", function () {
            console.log("imapConnected");
        });

        mailListener.on("server:disconnected", function () {
            console.log("imapDisconnected");
        });

        (function () {
            var count = 0;
            mailListener.on("mail", function (mail, seqno, attributes) {
                var mailuid = attributes.uid,
                    toMailbox = 'Inbox',
                    i = ++count;
                if (i > 1) {
                    mailListener.stop(); // start listening
                    return;
                }
                console.log('email parsed', {
                    i: i,
                    subject: mail.subject,
                    from: mail.from,
                    text:mail.text,
                    seqno: seqno,
                    uid: attributes.uid,
                    attributes: attributes
                });
                expect(mail.subject).toEqual("FW: Secure One-Time-Password for Account Login");

                var pattern = new RegExp(/Please use (\w+)/g);
                var regCode = pattern.exec(mail.text)[1];
                console.log(regCode);

                console.log('attempting to mark msg read/seen');
                mailListener.imap.addFlags(mailuid, '\\Seen', function (err) {
                    if (err) {
                        console.log('error marking message read/SEEN');
                        return;
                    }

                    //console.log('moving ' + (seqno || '?') + ' to ' + toMailbox);
                    //mailListener.imap.move(mailuid, toMailbox, function (err) {
                        if (err) {
                            console.log('error moving message');
                            return;
                        }
                        console.log('moved ' + (seqno || '?'), mail.subject);
                    });


                });
            });
        })

        ();
        mailListener.start(); // start listening

        setTimeout(function () {
            mailListener.stop(); // start listening
        }, 60 * 1000);

我正在阅读除文本以外的所有细节,文本采用html表格格式。

而不是文本我得到未定义的消息。如果需要我也将添加HTML代码。

如果我将相同的邮件从办公室365转发到gmail并从gmail读取邮件,我就可以获得文本。

错误:

 subject: 'test mail',
  from: [ { address: 'otp@gmail.com', name: 'gmail.com' } ],
  body: undefined,
  seqno: 2,
  uid: 18,
  attributes: 
   { date: 2017-06-14T16:22:06.000Z,
     flags: [ '\\Seen' ],
     uid: 18,
     modseq: '3914',
     'x-gm-labels': [],
     'x-gm-msgid': '1570197813730673685',
     'x-gm-thrid': '1570197813730673685' } }
[21:56:13] E/launcher - Cannot read property '1' of null
[21:56:13] E/launcher - TypeError: Cannot read property '1' of null

1 个答案:

答案 0 :(得分:1)

我发现这是一个老问题,但我遇到了同样的问题并且几乎使用了same function

我想通过链接获取电子邮件的内容,并且电子邮件是HTML格式。所以: mail.text 并不适合在这种情况下工作。

解决方案非常简单,直接适用于我: mail.html