-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
94 lines (81 loc) · 2.65 KB
/
server.js
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const express = require('express');
const Mailchimp = require('mailchimp-api-v3');
require('dotenv').config();
const nodemailer = require("nodemailer");
var mc_api_key = process.env.API_KEY;
var list_id = process.env.LIST_ID;
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mailchimp = new Mailchimp(mc_api_key);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// cors options
app.options('*', cors());
app.use(cors({
origin: "*",
methods: ['GET', 'POST', 'PATCH', 'DELETE', 'PUT'],
allowedHeaders: 'Content-Type,Authorization,Origin,X-Requested-with,Accept'
}));
const port = process.env.PORT || 4000;
app.listen(port, () => {
console.log(`express app listening on port ${port}`);
});
//routes
app.get('/', (req, res) => {
res.send("Welcome to Mailchimp!")
})
app.get('/api/memberList', (req, res) => {
mailchimp.get(`/lists/${list_id}/members`)
.then(function(results){
main('forfatherland90717@outlook.com');
res.json(results);
})
.catch(function(err){
res.json(err);
});
});
app.get("/api/memberAdd", (req, res) => {
mailchimp.post(`/lists/${list_id}/members/`, {
email_address: req.query.email,
status: "subscribed"
})
.then(result => {
main(req.query.email);
res.json(result);
})
.catch(err => {
res.json(err);
})
})
async function main(target_email) {
// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
let testAccount = await nodemailer.createTestAccount();
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp-relay.sendinblue.com",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'smtp email', // generated ethereal user
pass: 'pass', // generated ethereal password
},
tls: {
rejectUnauthorized: true
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"NEBULA 👻" <VictorySupper@gmail.com>', // sender address
to: target_email, // list of receivers
subject: "Welcome ✔", // Subject line
text: "Success", // plain text body
html: "<b>You have been subscribed successfully!</b>", // html body
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}