首页 > 解决方案 > mail-listener2:无法从对象中获取字符串“地址”

问题描述

我正在使用 mail-listener2 从我的 gmail 帐户获取电子邮件。

我正在尝试从“mail.to”对象中获取字符串“地址”,但我得到了“未定义”。有人能帮我吗?

日志:

imapConnected
email: emailt.ost.ea.m.a.c.c.o@gmail.com
mail.to: [{"address":"emailt.ost.ea.m.a.c.c.o@gmail.com","name":""}]
mail.to typeof: object
MessageTo: undefined

代码:

const MailListener = require("mail-listener2");
const mailListener = new MailListener({
    username: "*",
    password: "*",
    host: "imap.gmail.com",
    port: 993,
    tls: true,
    connTimeout: 10000,
    authTimeout: 5000, 
    mailbox: "INBOX",
    searchFilter: ["UNSEEN"],
    markSeen: false,
    fetchUnreadOnStart: true
});

mailListener.start();
mailListener.on("server:connected", function(){
    console.log("imapConnected");
}); 
getCodeFromEmail('', 0, 10000, "emailt.ost.ea.m.a.c.c.o@gmail.com", function(code){
    console.log(code);
});
function getCodeFromEmail(string, offset, length, email, callback) {
    var callback = function(mail) {
        console.log("email: " + email);
        console.log("mail.to: " + JSON.stringify(mail.to));
        console.log("mail.to typeof: " + typeof mail.to)
        if(mail.to.address == email) {
            callback(mail.html.substr(mail.html.lastIndexOf(string) + offset, length));
            mailListener.removeListener('mail', callback);
        } else console.log("MessageTo: " + mail.to.address)
    };
    mailListener.on('mail', callback);
}

谢谢。

标签: node.js

解决方案


支架:

mail.to: [{"address":"emailt.ost.ea.m.a.c.c.o@gmail.com","name":""}]
         ^

建议mail.to是一个数组而不是一个对象。所以需要类似的东西:

mail.to[0].address

推荐阅读