У меня есть следующий код, который хорошо работает, когда я запускаю код локально, он успешно отправляет электронное письмо, но при помещении того же кода в лямбда-код AWS (НЕТ 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);
}
};
Исходное электронное письмо занесено в белый список, что также подтверждено на панели инструментов AWS SES.
Также следует отметить, что я не вижукакие-либо ошибки в логах cloudwatch.
Кто-нибудь знает, что мне не хватает?
Локально работает без проблем!Вложение идет также хорошо.
Спасибо.