@gonjy_monjy/m06_vda 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/app.js +36 -0
- package/index.html +66 -0
- package/m06_vda.js +31 -0
- package/package.json +26 -0
package/app.js
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
const http = require('http');
|
2
|
+
const url = require('url');
|
3
|
+
const fs = require('fs');
|
4
|
+
const send = require('./m06_vda').send;
|
5
|
+
|
6
|
+
const port = 3000;
|
7
|
+
const hostname = 'localhost';
|
8
|
+
const appPassword = '<appPassword>';
|
9
|
+
|
10
|
+
const server = http.createServer(async (req, res) => {
|
11
|
+
res.statusCode = 200;
|
12
|
+
res.setHeader('Conent-Type', 'text/html');
|
13
|
+
res.setHeader('charset', 'utf-8');
|
14
|
+
|
15
|
+
const page = url.parse(req.url, true);
|
16
|
+
|
17
|
+
|
18
|
+
if (page.pathname === '/') {
|
19
|
+
res.setHeader('Content-Type', 'text/html');
|
20
|
+
res.end(fs.readFileSync('index.html'));
|
21
|
+
} else if (page.pathname === '/send')
|
22
|
+
{
|
23
|
+
let body = '';
|
24
|
+
req.on('data', (data) => {
|
25
|
+
body += data;
|
26
|
+
});
|
27
|
+
req.on('end', () => {
|
28
|
+
let options = JSON.parse(body);
|
29
|
+
res.end(send(options.from, options.to, appPassword, options.text));
|
30
|
+
})
|
31
|
+
}
|
32
|
+
});
|
33
|
+
|
34
|
+
server.listen(port, hostname, () => {
|
35
|
+
console.log(`Server running at http://${hostname}:${port}/`);
|
36
|
+
});
|
package/index.html
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>Lab5 - Mailer</title>
|
7
|
+
<style>
|
8
|
+
fieldset {
|
9
|
+
width: 400px;
|
10
|
+
margin: 100px auto;
|
11
|
+
display: block;
|
12
|
+
}
|
13
|
+
|
14
|
+
legend {
|
15
|
+
font-size: 24px;
|
16
|
+
}
|
17
|
+
|
18
|
+
label {
|
19
|
+
font-size: 20px;
|
20
|
+
}
|
21
|
+
|
22
|
+
input {
|
23
|
+
display: block;
|
24
|
+
margin-bottom: 20px;
|
25
|
+
}
|
26
|
+
|
27
|
+
textarea {
|
28
|
+
margin-bottom: 20px;
|
29
|
+
}
|
30
|
+
</style>
|
31
|
+
</head>
|
32
|
+
<body>
|
33
|
+
<fieldset>
|
34
|
+
<legend>Заполните форму</legend>
|
35
|
+
<form action="index.html">
|
36
|
+
<label for="input_from">FROM</label>
|
37
|
+
<input type="text" name="from" id="input_from">
|
38
|
+
<label for="input_to">TO</label>
|
39
|
+
<input type="text" name="to" id="input_to">
|
40
|
+
<label for="input_text">TEXT</label><br />
|
41
|
+
<textarea type="text" name="text" id="input_text"></textarea><br />
|
42
|
+
<input type="submit" name="submit" id="submit" value="Отправить запрос">
|
43
|
+
</form>
|
44
|
+
</fieldset>
|
45
|
+
|
46
|
+
<script>
|
47
|
+
document.querySelector("#submit").addEventListener("click", async (event) => {
|
48
|
+
event.preventDefault();
|
49
|
+
let from = document.querySelector("#input_from");
|
50
|
+
let to = document.querySelector("#input_to");
|
51
|
+
let text = document.querySelector("#input_text");
|
52
|
+
let bodyText = `{
|
53
|
+
"from": "${from.value.toString()}",
|
54
|
+
"to": "${to.value.toString()}",
|
55
|
+
"text": "${text.value.toString()}"
|
56
|
+
}`;
|
57
|
+
console.log(bodyText);
|
58
|
+
|
59
|
+
fetch("http://localhost:3000/send", {
|
60
|
+
method: "POST",
|
61
|
+
body: bodyText
|
62
|
+
});
|
63
|
+
});
|
64
|
+
</script>
|
65
|
+
</body>
|
66
|
+
</html>
|
package/m06_vda.js
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
const nodemailer = require("nodemailer");
|
2
|
+
|
3
|
+
const send = (fromAddr, toAddr, mailPass, message) => {
|
4
|
+
const options = {
|
5
|
+
from: fromAddr,
|
6
|
+
to: toAddr,
|
7
|
+
subject: "Lab05 task #3",
|
8
|
+
text: message,
|
9
|
+
};
|
10
|
+
const transporter = nodemailer.createTransport({
|
11
|
+
host: 'smtp.gmail.com',
|
12
|
+
port: 465,
|
13
|
+
secure: false,
|
14
|
+
service: "Gmail",
|
15
|
+
auth: {
|
16
|
+
user: fromAddr,
|
17
|
+
pass: mailPass,
|
18
|
+
},
|
19
|
+
});
|
20
|
+
|
21
|
+
|
22
|
+
transporter.sendMail(options, (err, info) => {
|
23
|
+
if (err) {
|
24
|
+
console.log(err);
|
25
|
+
} else {
|
26
|
+
console.log(info);
|
27
|
+
}
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
module.exports.send = send;
|
package/package.json
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"name": "@gonjy_monjy/m06_vda",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"description": "Lab6",
|
5
|
+
"main": "app.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
8
|
+
"dev": "nodemon app.js"
|
9
|
+
},
|
10
|
+
"devDependencies": {
|
11
|
+
"nodemon": "^2.0.20"
|
12
|
+
},
|
13
|
+
"author": "Volikov Dmitry",
|
14
|
+
"license": "ISC",
|
15
|
+
"dependencies": {
|
16
|
+
"nodemailer": "^6.9.7"
|
17
|
+
},
|
18
|
+
"repository": {
|
19
|
+
"type": "git",
|
20
|
+
"url": "git+ssh://git@github.com/0ero-1ne/lab5-nodejs.git"
|
21
|
+
},
|
22
|
+
"bugs": {
|
23
|
+
"url": "https://github.com/0ero-1ne/lab5-nodejs/issues"
|
24
|
+
},
|
25
|
+
"homepage": "https://github.com/0ero-1ne/lab5-nodejs#readme"
|
26
|
+
}
|