1
0
mirror of https://github.com/matt-fidd/stratos.git synced 2026-01-01 17:59:25 +00:00

Added new EmailBuilder class

This commit is contained in:
2022-02-14 15:02:37 +00:00
parent 6055a1e797
commit 1ccc25f185

78
lib/Emailer.js Normal file
View File

@@ -0,0 +1,78 @@
'use strict';
function removeDupes(src, dest) {
return src.filter(item => !dest.includes(item));
}
class EmailBuilder {
subject;
body;
HTMLBody;
from = 'Stratos <contact@stratos.com>';
to;
cc;
bcc;
constructor() {
this.to = [];
this.cc = [];
this.bcc = [];
}
setSubject(subject) {
this.subject = subject;
return this;
}
setBody(body) {
this.body = body;
return this;
}
setHTMLBody(HTMLBody) {
this.HTMLBody = HTMLBody;
return this;
}
setFrom(from) {
this.from = from;
return this;
}
addTo(addresses) {
const newAddresses = removeDupes(addresses, this.to);
this.to.push(...newAddresses);
return this;
}
removeTo(addresses) {
this.to = removeDupes(this.to, addresses);
return this;
}
addCC(addresses) {
const newAddresses = removeDupes(addresses, this.to);
this.cc.push(...newAddresses);
return this;
}
removeCC(addresses) {
this.cc = removeDupes(this.cc, addresses);
return this;
}
addBCC(addresses) {
const newAddresses = removeDupes(addresses, this.to);
this.bcc.push(...newAddresses);
return this;
}
removeBCC(addresses) {
this.bcc = removeDupes(this.bcc, addresses);
return this;
}
}
module.exports = {
EmailBuilder: EmailBuilder
};