Amazon web services 发送带有附件的电子邮件(sendRawEmail)在aws lambda上运行时不发送电子邮件

Amazon web services 发送带有附件的电子邮件(sendRawEmail)在aws lambda上运行时不发送电子邮件,amazon-web-services,aws-lambda,email-attachments,amazon-ses,Amazon Web Services,Aws Lambda,Email Attachments,Amazon Ses,我有以下代码,当我在本地运行代码时效果很好,它成功地发送了电子邮件,但是当在AWS lambda上放置相同的代码时(没有VPC,并且具有SES完全访问属性角色),它不会发送电子邮件,我做错了什么 const aws = require('aws-sdk'); aws.config.update({ "region": "eu-west-1", accessKeyId: 'myAccessKey', secretAccessKey: 'mySecretAccessKey' }); /

我有以下代码,当我在本地运行代码时效果很好,它成功地发送了电子邮件,但是当在AWS lambda上放置相同的代码时(没有VPC,并且具有SES完全访问属性角色),它不会发送电子邮件,我做错了什么

const aws = require('aws-sdk');
aws.config.update({
  "region": "eu-west-1",
  accessKeyId: 'myAccessKey',
  secretAccessKey: 'mySecretAccessKey'
});

/**
 * Send email with attachment.
 * 
 * @param {string} sourceEmail
 * @param {string} toEmail
 * @param {string} subject
 * @param {string} body
 * @param {string} fileName
 * @param {buffer} attachmentBuffer
 * 
 * @returns {void}
 */
module.exports.sendEmailWithAttachment = async (sourceEmail, toEmail, subject, body, fileName, attachmentBuffer) => {

    try {

        var sesEmail = "From: '" + subject + "' <" + sourceEmail + ">\n";
        sesEmail += "To: " + toEmail + "\n";
        sesEmail += "Subject: " + subject + "\n";
        sesEmail += "MIME-Version: 1.0\n";
        sesEmail += "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n";
        sesEmail += "--NextPart\n";
        sesEmail += "Content-Type: text/html\n\n";
        sesEmail += body+"\n\n";
        sesEmail += "--NextPart\n";
        sesEmail += "Content-Type: application/octet-stream; name=\"" + fileName + "\"\n";
        sesEmail += "Content-Transfer-Encoding: base64\n";
        sesEmail += "Content-Disposition: attachment\n\n";
        sesEmail += attachmentBuffer.toString("base64").replace(/([^\0]{76})/g, "$1\n") + "\n\n";
        sesEmail += "--NextPart--";

        var params = {
            RawMessage: {Data: sesEmail},
            Source: "'"+ subject + "' <" + sourceEmail + ">'"
        };


        await new aws.SES().sendRawEmail(params).promise();        


    } catch (err){

        console.log(err);
    }
};
const aws=require('aws-sdk');
aws.config.update({
“地区”:“欧盟-西部-1”,
accessKeyId:'myAccessKey',
secretAccessKey:'mySecretAccessKey'
});
/**
*发送带有附件的电子邮件。
* 
*@param{string}sourceEmail
*@param{string}toEmail
*@param{string}主题
*@param{string}体
*@param{string}文件名
*@param{buffer}attachmentBuffer
* 
*@returns{void}
*/
module.exports.sendmailwithattachment=async(sourceEmail、toEmail、subject、body、fileName、attachmentBuffer)=>{
试一试{
var sesEmail=“From:”+subject+“\n”;
sesEmail+=”收件人:“+toEmail+”\n”;
sesEmail+=“主题:”+Subject+“\n”;
sesEmail+=“MIME版本:1.0\n”;
sesEmail+=“内容类型:多部分/混合;边界=\”下一部分\“\n\n”;
sesEmail+=“--NextPart\n”;
sesEmail+=“内容类型:text/html\n\n”;
sesEmail+=正文+“\n\n”;
sesEmail+=“--NextPart\n”;
sesEmail+=“内容类型:应用程序/八位字节流;名称=\”“+fileName+\”\n”;
sesEmail+=“内容传输编码:base64\n”;
sesEmail+=“内容处置:附件\n\n”;
sesEmail+=attachmentBuffer.toString(“base64”).replace(/([^\0]{76})/g,“$1\n”)+“\n\n”;
sesEmail+=“--NextPart-->”;
变量参数={
RawMessage:{Data:sesEmail},
来源:“'”+主题+“'
};
等待新的aws.SES().sendrawmail(params.promise();
}捕捉(错误){
控制台日志(err);
}
};
源电子邮件在AWS SES仪表板上也被列为已验证的白名单

还要注意的是,我在cloudwatch日志中没有看到任何错误

有人知道我错过了什么吗

本地运行没有任何问题!附件也进行得很顺利


谢谢。

你能分享你的lambda日志和区域吗?谢谢你的帮助,它已经在工作了,我没有等待我粘贴在这里的这个函数调用,在调用它之前放置了“等待”,不管怎样,谢谢你!(它在我的机器上本地工作,没有等待,因为它可能比在lambda上执行快)你能分享你的lambda日志和区域吗?谢谢你的帮助,它已经工作了,我没有等待我粘贴在这里的这个函数调用,在调用它之前放置了“等待”,不管怎样,谢谢你!(它在我的机器上本地工作,没有等待,因为与在lambda上执行相比,它可能太快了)