-
Notifications
You must be signed in to change notification settings - Fork 0
/
firstDoorSendMail.js
219 lines (188 loc) · 8.05 KB
/
firstDoorSendMail.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
/*global require:false exports:false*/
/*jshint strict:false unused:true smarttabs:true eqeqeq:true immed: true undef:true*/
/*jshint maxparams:7 maxcomplexity:7 maxlen:150 devel:true newcap:false*/
var nodemailer = require("nodemailer");
var http = require('http');
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Mailgun",
auth: {
user: "postmaster@axion5.net",
pass: process.env.MAILGUN_PWD
}
});
// var smtpTransport = nodemailer.createTransport("SMTP",{
// service: "Gmail",
// auth: {
// user: "firstdoormail@gmail.com",
// pass: "northlakes13"
// }
// });
// // send mail with defined transport object
// function sendMail(mailOptions) {
// smtpTransport.sendMail(mailOptions, function(error, response){
// if(error){
// console.log(error);
// }else{
// console.log("Message sent: " + response.message);
// }
// // if you don't want to use this transport object anymore, uncomment following line
// //smtpTransport.close(); // shut down the connection pool, no more messages
// });
// }
var sendThankyou = function (data, success, error) {
console.log("Sending thankyou!!!!");
var text = "Dear " + data.username + ",<p>" +
"Thank you for contacting First Door.<p>" +
"We will be in contact with you soon.<p>" +
"Regards,<p>" +
"The First Door team";
// setup e-mail data with unicode symbols
var mailOptions = {
from: "admin@firstdoor.com.au", // sender address
to: data.email, // list of receivers
// to: "michieljoris@gmail.com", // list of receivers
subject: "Thank you for contacting First Door", // Subject line
// text: data.message // plaintext body
html: text // html body
};
smtpTransport.sendMail(mailOptions, function(err, response){
if(err){
console.log(err);
error(err);
}else{
console.log("Message sent: " + response.message);
success(response.message);
}
// if you don't want to use this transport object anymore, uncomment following line
//smtpTransport.close(); // shut down the connection pool, no more messages
});
// sendMail(mailOptions);
};
var sendEmail = function (data, success, error) {
console.log("Sending email!!!!");
var text = data.username + " with email address " + "<a href='mailto:" + data.email + "'>" + data.email + "</a>" +
" sent the following message: <p>" + data.textmessage;
// setup e-mail data with unicode symbols
var mailOptions = {
from: "mail@axion5.net", // sender address
to: "admin@firstdoor.com.au", // list of receivers
// to: "michieljoris@gmail.com", // list of receivers
// to: "mail@axion5.net", // list of receivers
// to: "jujusilkie@gmail.com", // list of receivers
cc: "mail@axion5.net", // list of receivers
subject: data.username + " has used the First Door contact us form!", // Subject line
// text: data.message // plaintext body
html: text // html body
};
smtpTransport.sendMail(mailOptions, function(err, response){
if(err){
console.log(err);
error(err);
}else{
console.log("Message sent: " + response.message);
success(response.message);
}
// if you don't want to use this transport object anymore, uncomment following line
//smtpTransport.close(); // shut down the connection pool, no more messages
});
// sendMail(mailOptions);
};
function recaptcha_verify(parameters, success, error) {
//comment out the next two lines to enable captcha checking
//see firstdoor on how to implement client side (in www/js/controllers.js)
success();
return;
// console.log(parameters);
console.log("Verifying captcha");
var headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': parameters.length
};
var options = {
host: 'www.google.com',
port: 80,
path: '/recaptcha/api/verify',
data: parameters,
method: 'POST',
headers: headers
};
// console.log("Defining req");
var req = http.request(options, function(res) {
// console.log("Got response: " + res.statusCode);
// console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf-8');
var response = '';
res.on('data', function(chunk) {
response += chunk;
});
res.on('end', function() {
var arr = response.split('\n');
response = {
success: arr[0],
error: arr[1]
};
// console.log('Verifying captcha result:', response);
if (response.success === 'true') success();
else error(response.error);
});
req.on('error', function(e) {
console.log("Error in captcha verify ", e);
error('Couldn\'t verify captcha!!!' + e.toString());
});
});
// console.log("Writing request to captcha");
req.write(parameters);
req.end();
}
module.exports = function(req, res) {
console.log('Firstdoor send mail is handling post!!');
console.log(req.headers['x-forwarded-for']);
var data = '';
req.on('data', function(chunk) {
data+=chunk;
});
res.writeHead(200, "OK", {'Content-Type': 'text/html'});
req.on('error', function(e) {
res.write(JSON.stringify({ success:false, error:e }));
res.end();
});
req.on('end', function() {
try {
console.log("Received body data:");
data = JSON.parse(data);
var parameters = 'privatekey=6LfL6OASAAAAAHklMnnQdS4AmZvXuOp1ihgPY7V9&remoteip=' + req.headers['x-forwarded-for'] +
'&challenge=' + data.recaptcha_challenge + '&response=' + data.recaptcha_response;
recaptcha_verify(parameters,
function() {
sendEmail(data,
function() {
res.write(JSON.stringify({ success:true }));
res.end();
},
function(e) {
res.write(JSON.stringify({ success:false, error:e }));
res.end();
});
sendThankyou(data,
function() {
// res.write(JSON.stringify({ success:true }));
// res.end();
},
function(e) {
// res.write(JSON.stringify({ success:false, error:e }));
// res.end();
});
},
function(e) { console.log("failed to verify captcha:" + e);
res.write(JSON.stringify({ success:false, error: e}));
res.end();
}
);
} catch(e) {
console.log("Failure!!!", e);
res.write(JSON.stringify({ success:false, error: e}));
res.end();
}
});
};