lab05artsiom 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
package/05_02.js ADDED
@@ -0,0 +1,57 @@
1
+ const http = require("http");
2
+ const fs = require("fs");
3
+ const nodemailer = require("nodemailer");
4
+ const url = require("url");
5
+ const Emitter = require("events");
6
+ const emitter = new Emitter();
7
+
8
+ let senderEmail;
9
+ let senderPass;
10
+ let receiverEmail;
11
+ let message;
12
+
13
+ emitter.on("POST", (request, response) => {
14
+ console.log("POST.MESSAGE");
15
+ request.on("data", (data) => {
16
+ let temp = JSON.parse(data);
17
+ senderEmail = temp.sender;
18
+ senderPass = temp.senderPass;
19
+ receiverEmail = temp.receiver;
20
+ message = temp.message;
21
+ let transporter = nodemailer.createTransport({
22
+ host: "smtp.gmail.com",
23
+ port: 465,
24
+ seccure: false,
25
+ service: "gmail",
26
+ auth: {
27
+ user: senderEmail,
28
+ pass: senderPass,
29
+ },
30
+ });
31
+
32
+ let mailOptions = {
33
+ from: senderEmail,
34
+ to: receiverEmail,
35
+ subject: "Sending email using Node.js",
36
+ text: message,
37
+ };
38
+ transporter.sendMail(mailOptions, function (error, info) {
39
+ if (error) {
40
+ console.log(error);
41
+ } else {
42
+ console.log("Email sent: " + info.response);
43
+ }
44
+ });
45
+ response.end(JSON.stringify(temp));
46
+ });
47
+ });
48
+
49
+ http.createServer((request, response) => {
50
+ let html = fs.readFileSync("index.html");
51
+ if (url.parse(request.url).pathname === "/") {
52
+ response.writeHead(200, { "Context-type": "text/html; charset=utf-8" });
53
+ response.end(html);
54
+ } else if (url.parse(request.url).pathname === "/send") {
55
+ emitter.emit(request.method, request, response);
56
+ }
57
+ }).listen(5000, console.log("Server is running"));
package/05_03.js ADDED
@@ -0,0 +1,25 @@
1
+ const send = require("./05_NAO");
2
+ const http = require("http");
3
+ const fs = require("fs");
4
+ const url = require("url");
5
+ const Emitter = require("events");
6
+ const emitter = new Emitter();
7
+
8
+ emitter.on("POST", (request, response) => {
9
+ console.log("POST.MESSAGE");
10
+ request.on("data", (data) => {
11
+ let temp = JSON.parse(data);
12
+ send(temp.sender, temp.senderPass, temp.receiver, temp.message);
13
+ response.end(JSON.stringify(temp));
14
+ });
15
+ });
16
+
17
+ http.createServer((request, response) => {
18
+ let html = fs.readFileSync("index.html");
19
+ if (url.parse(request.url).pathname === "/") {
20
+ response.writeHead(200, { "Context-type": "text/html; charset=utf-8" });
21
+ response.end(html);
22
+ } else if (url.parse(request.url).pathname === "/send") {
23
+ emitter.emit(request.method, request, response);
24
+ }
25
+ }).listen(5000, console.log("Server is running"));
package/05_NAO.js ADDED
@@ -0,0 +1,30 @@
1
+ const nodemailer = require("nodemailer");
2
+
3
+ send = (senderAddr, senderPass, receiverAddr, message) => {
4
+ let transporter = nodemailer.createTransport({
5
+ host: "smtp.gmail.com",
6
+ port: 465,
7
+ seccure: false,
8
+ service: "gmail",
9
+ auth: {
10
+ user: senderAddr,
11
+ pass: senderPass,
12
+ },
13
+ });
14
+
15
+ let mailOptions = {
16
+ from: senderAddr,
17
+ to: receiverAddr,
18
+ subject: "Sending email using Node.js",
19
+ text: message,
20
+ };
21
+ transporter.sendMail(mailOptions, function (error, info) {
22
+ if (error) {
23
+ console.log(error);
24
+ } else {
25
+ console.log("Email sent: " + info.response);
26
+ }
27
+ });
28
+ };
29
+
30
+ module.exports = send;
package/index.html ADDED
@@ -0,0 +1,62 @@
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</title>
7
+ <style>
8
+ div {
9
+ margin: 20px 0 20px 0;
10
+ }
11
+ </style>
12
+ </head>
13
+ <body>
14
+ <div class="mail_container">
15
+ <div class="sender_container">
16
+ <label>Email отправителя</label>
17
+ <input type="email" id="sender" />
18
+ </div>
19
+ <div class="sender_container">
20
+ <label>Pass отправителя</label>
21
+ <input type="password" id="sender_password" />
22
+ </div>
23
+ <div class="receiver_container">
24
+ <label>Email получателя</label>
25
+ <input type="email" name="" id="receiver" />
26
+ </div>
27
+ <div class="message">
28
+ <label>Сообщение для отправки</label>
29
+ <input type="text" id="text" />
30
+ </div>
31
+ <div class="button_send">
32
+ <button onclick="Post()">Отправить сообщение</button>
33
+ </div>
34
+ </div>
35
+
36
+ <script>
37
+ function Post() {
38
+ console.log("Message sent");
39
+ fetch("http://localhost:5000/send", {
40
+ method: "POST",
41
+ mode: "no-cors",
42
+ headers: {
43
+ "Content-Type": "application/json",
44
+ Accept: "application/json",
45
+ },
46
+ body: JSON.stringify({
47
+ sender: sender.value,
48
+ senderPass: sender_password.value,
49
+ receiver: receiver.value,
50
+ message: text.value,
51
+ }),
52
+ })
53
+ .then((response) => {
54
+ return response.json();
55
+ })
56
+ .then((pdata) => {
57
+ console.log("Message", pdata);
58
+ });
59
+ }
60
+ </script>
61
+ </body>
62
+ </html>
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "dependencies": {
3
+ "nodemailer": "^6.9.5"
4
+ },
5
+ "name": "lab05artsiom",
6
+ "version": "1.0.0",
7
+ "main": "05_03.js",
8
+ "devDependencies": {},
9
+ "scripts": {
10
+ "test": "echo \"Error: no test specified\" && exit 1"
11
+ },
12
+ "author": "",
13
+ "license": "ISC",
14
+ "description": ""
15
+ }