首页 > 解决方案 > 如何在 AWS Lambda 函数中连接 node-imap 模块

问题描述

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

这让我想到,也许 AWS Lambda 函数无法像我的机器一样连接到电子邮件提供商,也许我需要在 AWS 控制台上进行一些额外的调整;

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

我在我的 lambda 中使用 Node 和 node-imap 包连接到 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();
};

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

:)

标签: javascriptnode.jsamazon-web-servicesaws-lambdanode-imap

解决方案


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

exports.handler = async(event) => {

只需删除它

exports.handler = (event) => {

或以这种方式

exports.handler = function(event) {

对我来说完美无缺。


推荐阅读