This repository was archived by the owner on Dec 28, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathemail.js
More file actions
73 lines (63 loc) · 1.94 KB
/
email.js
File metadata and controls
73 lines (63 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
const logger = require('./logger')
const templateLoader = require('./loadTemplate')
const MailComposer = require('nodemailer/lib/mail-composer')
const mailgun = require('mailgun-js')({
apiKey: process.env.MAILGUN_API_KEY,
domain: process.env.MAILGUN_DOMAIN,
})
const list = require('./list')('users')
const from = 'Martin from Cast <martin@cast.multipl.io>'
module.exports = new Promise(function (resolve, reject) {
templateLoader('/templates/onboard')
.then((onboardTemplate) => {
const newJoined = function (email, name) {
const subject = 'Welcome aboard!'
const view = {
name: name || 'new member',
service: 'twitter',
homepageLink: 'https://cast.multipl.io',
startLink: 'https://cast.multipl.io',
unsubscribeLink: 'https://cast.multipl.io/unsubscribe/' + email,
}
const rendered = onboardTemplate(view)
const mail = new MailComposer({
from: from,
to: '',
subject: subject,
text: rendered.plain,
html: rendered.html,
}).compile()
mail.build((err, message) => {
if (err) {
logger.error(`could not compile email : ${err}`)
return
}
logger.debug('message compiled')
// send the onboarding email
const dataToSend = {
to: email,
message: message.toString('ascii'),
}
mailgun.messages().sendMime(
dataToSend,
(sendError, body) => {
logger.info(body)
if (sendError) {
logger.error(sendError)
}
})
})
// add to mailing list
const members = [{
address: email,
name: name || '',
}]
list.add(members, true)
}
// return prepared functions
resolve({
onboard: newJoined,
})
})
.catch(e => reject(e))
})