mirror of
https://github.com/matt-fidd/stratos.git
synced 2026-01-01 22:19:26 +00:00
Added new EmailBuilder class
This commit is contained in:
78
lib/Emailer.js
Normal file
78
lib/Emailer.js
Normal 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
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user