|
|
@ -1,12 +1,12 @@
|
|
|
|
const fs = require("fs");
|
|
|
|
const fs = require('fs');
|
|
|
|
const Mailgun = require("mailgun.js");
|
|
|
|
const Mailgun = require('mailgun.js');
|
|
|
|
const formData = require("form-data");
|
|
|
|
// const formData = require('form-data');
|
|
|
|
const dotenv = require("dotenv");
|
|
|
|
const dotenv = require('dotenv');
|
|
|
|
const i18next = require("i18next");
|
|
|
|
const i18next = require('i18next');
|
|
|
|
const Backend = require("i18next-chained-backend");
|
|
|
|
const Backend = require('i18next-chained-backend');
|
|
|
|
const FSBackend = require("i18next-fs-backend");
|
|
|
|
const FSBackend = require('i18next-fs-backend');
|
|
|
|
const HttpApi = require("i18next-http-backend");
|
|
|
|
const HttpApi = require('i18next-http-backend');
|
|
|
|
const Handlebars = require("handlebars");
|
|
|
|
// const Handlebars = require("handlebars");
|
|
|
|
|
|
|
|
|
|
|
|
dotenv.config();
|
|
|
|
dotenv.config();
|
|
|
|
const {
|
|
|
|
const {
|
|
|
@ -17,12 +17,12 @@ const {
|
|
|
|
CONTACT_TO_EMAIL_ADDRESS,
|
|
|
|
CONTACT_TO_EMAIL_ADDRESS,
|
|
|
|
} = process.env;
|
|
|
|
} = process.env;
|
|
|
|
|
|
|
|
|
|
|
|
const mailgun = new Mailgun(formData);
|
|
|
|
// const mailgun = new Mailgun(formData);
|
|
|
|
const mg = mailgun.client({
|
|
|
|
// const mg = mailgun.client({
|
|
|
|
username: "api",
|
|
|
|
// username: 'api',
|
|
|
|
key: MAILGUN_API_KEY,
|
|
|
|
// key: MAILGUN_API_KEY,
|
|
|
|
url: "https://api.eu.mailgun.net",
|
|
|
|
// url: 'https://api.eu.mailgun.net',
|
|
|
|
});
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
const success = {
|
|
|
|
const success = {
|
|
|
|
statusCode: 200,
|
|
|
|
statusCode: 200,
|
|
|
@ -83,30 +83,30 @@ const err = {
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// const txtStr = fs.readFileSync(__dirname + "/invite.txt").toString();
|
|
|
|
// const txtStr = fs.readFileSync(__dirname + "/invite.txt").toString();
|
|
|
|
const txtStr = {
|
|
|
|
const txtStr = {
|
|
|
|
en: fs.readFileSync(__dirname + "/invite-en.txt").toString(),
|
|
|
|
en: fs.readFileSync(__dirname + '/invite-en.txt').toString(),
|
|
|
|
fr: fs.readFileSync(__dirname + "/invite-fr.txt").toString(),
|
|
|
|
fr: fs.readFileSync(__dirname + '/invite-fr.txt').toString(),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const txtTemplate = {
|
|
|
|
const txtTemplate = {
|
|
|
|
en: Handlebars.compile(txtStr.en),
|
|
|
|
en: Handlebars.compile(txtStr.en),
|
|
|
|
fr: Handlebars.compile(txtStr.fr),
|
|
|
|
fr: Handlebars.compile(txtStr.fr),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const htmlStr = {
|
|
|
|
const htmlStr = {
|
|
|
|
en: fs.readFileSync(__dirname + "/invite-en.html").toString(),
|
|
|
|
en: fs.readFileSync(__dirname + '/invite-en.html').toString(),
|
|
|
|
fr: fs.readFileSync(__dirname + "/invite-fr.html").toString(),
|
|
|
|
fr: fs.readFileSync(__dirname + '/invite-fr.html').toString(),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const htmlTemplate = {
|
|
|
|
const htmlTemplate = {
|
|
|
|
en: Handlebars.compile(htmlStr.en),
|
|
|
|
en: Handlebars.compile(htmlStr.en),
|
|
|
|
fr: Handlebars.compile(htmlStr.fr),
|
|
|
|
fr: Handlebars.compile(htmlStr.fr),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const test = Handlebars.compile("test");
|
|
|
|
const test = Handlebars.compile('test');
|
|
|
|
|
|
|
|
|
|
|
|
const sendMail = async (event) => {
|
|
|
|
const sendMail = async (event) => {
|
|
|
|
if (event.httpMethod !== "POST") {
|
|
|
|
if (event.httpMethod !== 'POST') {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
statusCode: 405,
|
|
|
|
statusCode: 405,
|
|
|
|
body: "Method Not Allowed",
|
|
|
|
body: 'Method Not Allowed',
|
|
|
|
headers: { Allow: "POST" },
|
|
|
|
headers: { Allow: 'POST' },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -114,7 +114,7 @@ const sendMail = async (event) => {
|
|
|
|
if (!data.recipientVariables || !data.title || !data.locale) {
|
|
|
|
if (!data.recipientVariables || !data.title || !data.locale) {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
statusCode: 422,
|
|
|
|
statusCode: 422,
|
|
|
|
body: "Recipient variables and title are required.",
|
|
|
|
body: 'Recipient variables and title are required.',
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -130,21 +130,22 @@ const sendMail = async (event) => {
|
|
|
|
text: txtTemplate.fr(templateData),
|
|
|
|
text: txtTemplate.fr(templateData),
|
|
|
|
html: htmlTemplate.fr(templateData),
|
|
|
|
html: htmlTemplate.fr(templateData),
|
|
|
|
subject: data.title,
|
|
|
|
subject: data.title,
|
|
|
|
"h:Reply-To": "app@mieuxvoter.fr",
|
|
|
|
'h:Reply-To': 'app@mieuxvoter.fr',
|
|
|
|
"recipient-variables": JSON.stringify(data.recipientVariables),
|
|
|
|
'recipient-variables': JSON.stringify(data.recipientVariables),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const res = mg.messages
|
|
|
|
return true;
|
|
|
|
.create("mg.app.mieuxvoter.fr", mailgunData)
|
|
|
|
// const res = mg.messages
|
|
|
|
.then((msg) => {
|
|
|
|
// .create('mg.app.mieuxvoter.fr', mailgunData)
|
|
|
|
return success;
|
|
|
|
// .then((msg) => {
|
|
|
|
}) // logs response data
|
|
|
|
// return success;
|
|
|
|
.catch((err) => {
|
|
|
|
// }) // logs response data
|
|
|
|
console.log(err);
|
|
|
|
// .catch((err) => {
|
|
|
|
return success;
|
|
|
|
// console.log(err);
|
|
|
|
}); // logs any error
|
|
|
|
// return success;
|
|
|
|
|
|
|
|
// }); // logs any error
|
|
|
|
return res;
|
|
|
|
//
|
|
|
|
|
|
|
|
// return res;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
exports.handler = sendMail;
|
|
|
|
exports.handler = sendMail;
|
|
|
|