lab05artsiom 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/05_02.js +57 -0
- package/05_03.js +25 -0
- package/05_NAO.js +30 -0
- package/index.html +62 -0
- package/package.json +15 -0
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
|
+
}
|