mirror of
https://github.com/matt-fidd/stratos.git
synced 2026-01-01 20:19:30 +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