Send templated bulk email, and remember notifed marketalerts

This commit is contained in:
Nedim Uka
2019-06-28 18:06:19 +02:00
parent b3baffe174
commit 96e9da1fb1
7 changed files with 98 additions and 61 deletions

View File

@@ -28,11 +28,11 @@ const sendTemplatedEmail = async (email, request) => {
Body: { /* required */
Html: {
Charset: "UTF-8",
Data: getEmailHTML(request)
Data: getGreetingsEmailHTML(request)
},
Text: {
Charset: "UTF-8",
Data: getEmaiTextVersion(request)
Data: getGreetingsEmaiTextVersion(request)
}
},
Subject: {
@@ -50,7 +50,7 @@ const sendTemplatedEmail = async (email, request) => {
await sendEmailPromise;
}
const getEmailHTML = (realestateRequest) => {
const getGreetingsEmailHTML = (realestateRequest) => {
const realEstateType = getRealEstateTypeEnum(realestateRequest.realEstateType);
const gardenSize = realEstateType.hasGardenSize ? `<div><strong>Kvadratura okućnice: Od ${realestateRequest.gardenSizeMin} do ${realestateRequest.gardenSizeMax} m2 </strong></div>` : ``
@@ -76,7 +76,7 @@ Javimi tim.
}
const getEmaiTextVersion = (realestateRequest) => {
const getGreetingsEmaiTextVersion = (realestateRequest) => {
const realEstateType = getRealEstateTypeEnum(realestateRequest.realEstateType);
const gardenSize = realEstateType.hasGardenSize ? "Kvadratura okućnice od " + realestateRequest.gardenSizeMin + " do " + realestateRequest.gardenSizeMax : ""
@@ -95,45 +95,39 @@ const getEmaiTextVersion = (realestateRequest) => {
const sendBulkEmail = async (marketAlerts) => {
try {
// Create the promise and SES service object
// const templatePromise = new AWS.SES({ apiVersion: '2010-12-01' }).getTemplate({ TemplateName: TEMPLATE_NAME }).promise();
// const template = await templatePromise;
// console.log(template);
destinations = []
groupedEmails = [];
marketAlerts.forEach(marketAlert => {
if (!groupedEmails[marketAlert.email]) {
groupedEmails[marketAlert.email] = [];
groupedEmails[marketAlert.email].push({ url: marketAlert.url, title: marketAlert.title });
} else {
groupedEmails[marketAlert.email].push({ url: marketAlert.url, title: marketAlert.title });
}
});
for (email in groupedEmails) {
const url = groupedEmails[email];
let repData = `{ "marketAlertUrl":[${toAWSArray(url)}], "favoriteanimal":"yak" }`
destinations.push({
Destination: {
ToAddresses: [
marketAlert.email
email
]
},
ReplacementTemplateData: `{ "marketAlertUrl":"${marketAlert.url}", "favoriteanimal":"yak" }`
ReplacementTemplateData: repData
})
});
}
console.log(destinations);
// Create sendBulkTemplatedEmail params
var params = {
Destinations: /* required */
// {
// Destination: { /* required */
// CcAddresses: [
// 'EMAIL_ADDRESS',
// /* more items */
// ],
// ToAddresses: [
// 'EMAIL_ADDRESS',
// 'EMAIL_ADDRESS'
// /* more items */
// ]
// },
// ReplacementTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }'
// },
// ],
destinations,
Destinations:
destinations,
Source: process.env.SOURCE_EMAIL, /* required */
Template: TEMPLATE_NAME, /* required */
DefaultTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }',
@@ -142,12 +136,8 @@ const sendBulkEmail = async (marketAlerts) => {
]
};
// Create the promise and SES service object
const sendPromise =new AWS.SES({ apiVersion: '2010-12-01' }).sendBulkTemplatedEmail(params).promise();
const sendPromise = new AWS.SES({ apiVersion: '2010-12-01' }).sendBulkTemplatedEmail(params).promise();
await sendPromise;
@@ -155,20 +145,45 @@ const sendBulkEmail = async (marketAlerts) => {
console.log("Could not send bulk email", e)
}
}
const toAWSArray = (urlArray) => {
let arrayString = ""
urlArray.forEach(element => {
arrayString = arrayString + `{"url":"${element.url}" , "title":"${element.title}"},`
});
return arrayString.slice(0, -1);;
}
const getNotificationEmailHtml = () => {
return `<h2> Zdravo,
Pronašli smo nekretninu koju ste tražili. </h2>
<h3> Ovo su tražene nekretnine: </h3>
<div>
<div>{{#each marketAlertUrl}}<li><a href="{{url}}">{{title}}</a></li><br />{{/each}}<div/>
<div/>
</div>`
}
const getNotificationEmailText = () => {
return ` Zdravo,
Pronašli smo nekretninu koju ste tražili. Ovo su tražene nekretnine: {{#each marketAlertUrl}} {{url}} {{title}} {{/each}}`
}
const createMarketAlertEmailTemplate = async () => {
const marketAlertTemplate = {
Template: {
TemplateName: "MarketAlertTemplate",
SubjectPart: "Greetings",
SubjectPart: "Javi mi obavijest",
TextPart: "Dear ,\r\nYour favorite animal is {{marketAlertUrl}}.",
HtmlPart: "<h1>Hello </h1><p>Your favorite animal is {{marketAlertUrl}}.</p>"
HtmlPart: getNotificationEmailHtml()
}
}
try {
const templatePromise = new AWS.SES({ apiVersion: '2010-12-01' }).createTemplate(marketAlertTemplate).promise();
const templatePromise = new AWS.SES({ apiVersion: '2010-12-01' }).updateTemplate(marketAlertTemplate).promise();
await templatePromise
} catch (e) {
@@ -176,8 +191,6 @@ const createMarketAlertEmailTemplate = async () => {
}
}
module.exports = {
sendTemplatedEmail,
sendBulkEmail,