Требование
Я пытаюсь сделать следующее: сначала я скачаю документ из S3 Bucket, затем отправлю этот документ через SES, метод sendRawEmail в виде вложения с файлом, загруженным из S3.
Что я делал до сих пор
Я скачал файл с S3, могу отправить письмо с вложением. Он достигает пункта назначения, как и ожидалось (form.docx)
Error
Когда я отправляю вложение, я должен добавить строку base64 (которая является вложением) в форму данных. Я прилагаю строку. Но когда я скачаю вложение. Там я вижу, что внутри form.docx есть конвертированная строка base64 внутри вложения. Это не так, как ожидалось. Я должен видеть столы и некоторые заполнять пробелы. Но здесь это очень большая строка base64
код
const AWS = require('aws-sdk');
const S3= new AWS.S3();
let ses = new AWS.SES();
exports.hello = async (event, context) => {
try {
const valueFromBucket = await S3.getObject({Bucket: '*******', Key: 'form.docx'}).promise();
var buffer = valueFromBucket.Body.toString('base64');
var message = '<html><body ><div> This is a test Message</div></body></html>';
var fromEmail = '******@gmail.com';
var toEmail = '*******@gmail.com';
var ses_mail = "From: 'Email' <" + fromEmail + ">\n";
ses_mail = ses_mail + "To: " + toEmail + "\n";
ses_mail = ses_mail + "Subject: Subject Email\n";
ses_mail = ses_mail + "MIME-Version: 1.0\n";
ses_mail = ses_mail + "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n";
ses_mail = ses_mail + "--NextPart\n";
ses_mail = ses_mail + "Content-Type: text/html; charset=iso-8859-1\n\n";
ses_mail = ses_mail + message+"\n";
ses_mail = ses_mail + "--NextPart\n";
ses_mail = ses_mail + "Content-Type: application/msword\n";
ses_mail = ses_mail + "Content-Disposition: attachment; filename=\"form.docx\"\n\n";
ses_mail = ses_mail + "Content-Transfer-Encoding: base64\n\n"
ses_mail = ses_mail + buffer + "\n";
ses_mail = ses_mail + "--NextPart--";
var params = {
RawMessage: { Data: new Buffer(ses_mail)},
Destinations: [ "*******@gmail.com" ],
Source: "'AWS Tutorial Series' <" + fromEmail + ">'"
};
const sendPromise = await new AWS.SES({ apiVersion: "2010-12-01" })
.sendRawEmail(params)
.promise();
return{
statusCode: 200,
body: JSON.stringify(sendPromise)
}
}
catch (err) {
return {
statusCode: err.statusCode || 400,
body: err.message || JSON.stringify(err.message)
}
}
}
Любая помощь или предложения высоко ценится
Заранее спасибо