繁体   English   中英

如何在 AWS Lambda function 中连接 node-imap 模块

[英]How to connect node-imap module inside AWS Lambda function

我有这个 email 服务器,我必须为我工作的公司的两个 web 应用程序创建一个微服务,架构有点像这样:

  • Node 应用程序每 x 分钟通过客户电子邮件列表运行一次扫描,并检查是否有任何新电子邮件(这些客户的电子邮件可以有许多不同的域);
  • If there is a new email to that particular client, it will invoke a lambda function to connect to that particular email (with node-imap module, using imap protocol) and perform some actions with the unread email;
  • 我在本地主机上完成了所有工作,我可以在本地搜索所有 email 并通过在我的机器上模拟 AWS Lambda 的执行来执行我需要的所有操作;
  • 问题是在实际“生产”时调用 Lambda(实际上在 AWS Lambda 中的 lambda function),它似乎没有连接到 email 地址,即使一切正常
  • 我正在调用exports.handler(我使用一些console.logs检查)并且参数都很好(我已经硬编码它们只是为了确定);

这让我想到,也许 AWS Lambda 功能无法像我的机器一样连接到 email 提供程序,也许我需要在 AWS 控制台上进行一些额外的调整;

有人对发生的事情有任何想法吗? 我尝试通过谷歌搜索,但找不到任何相关内容。

我在我的 lambda 上使用 Node 和 node-imap package 连接到 imap 服务器并搜索未读消息。 我的 lambda 的代码:

const Imap = require('imap');

exports.handler = async(event) => {
    const payloadObj = event;

    const imap = new Imap({
        user: payloadObj.email,
        password: payloadObj.pwd,
        host: payloadObj.provider,
        port: 993,
        tls: true
    });
    
    imap.once('ready', function() {
        console.log('Connection stablished'); // never triggered
        imap.end();
    });
    
    imap.once('end', function() {
        console.log('Connection ended'); // never triggered
    });

    imap.connect();
};

提前感谢所有读到这里的人。

:)

我有同样的问题,我意识到问题出在异步词上

exports.handler = async(event) => {

只需删除它

exports.handler = (event) => {

或以这种方式

exports.handler = function(event) {

对我来说完美无缺。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM