Advertisement
Guest User

Untitled

a guest
Aug 10th, 2017
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.15 KB | None | 0 0
  1. Использую nodemailer для отправки на почту, ничего не приходит в ответ выдает ошибку 404. Ниже приведена структура каталогов
  2.  
  3.  
  4. Структура
  5. node_modules
  6. public
  7. views
  8. layouts
  9. main.handlebars
  10. feedback.handlebars
  11. home.handlebars
  12.  
  13.  
  14. main.handlebars
  15.  
  16. <!doctype html>
  17. <html lang="en">
  18. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
  19.  
  20. <head>
  21. <meta charset="UTF-8">
  22. <meta name="viewport"
  23. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  24. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  25. <title>Web Приложение</title>
  26. </head>
  27. <body>
  28. <header>
  29. <img class="logo" src="" alt="">
  30.  
  31.  
  32. <nav class="menu">
  33. <ul class="menu__list">
  34. <li class="menu__item"><a href="/" class="menu__link">Главная</a></li>
  35. <li class="menu__item"><a href="/feedback/" class="menu__link">Обратная связь</a></li>
  36. </ul>
  37. </nav>
  38. </header>
  39.  
  40.  
  41. {{{body}}}
  42. </body>
  43. </html>
  44.  
  45.  
  46.  
  47. home.handlebars
  48.  
  49. <h1>Обратная связь</h1>
  50. <div class="container">
  51. <form method="post" name="feedback" id="feedback" action="">
  52. <fieldset>
  53. <div class="form-group row">
  54. <div class="col-2 col-form-label">
  55. <label for="">Ваше Имя:</label>
  56. </div>
  57. <div class="col-sm-10">
  58. <input class="form-control" type="text" name="username">
  59. </div>
  60.  
  61. </div>
  62.  
  63. <div class="form-group row">
  64. <div class="col-2 col-form-label">
  65. <label for="">E-mail:</label>
  66. </div>
  67. <div class="col-sm-10">
  68. <input class="form-control" type="email" name="email" id="">
  69. </div>
  70.  
  71. </div>
  72. <div class="form-group row">
  73. <div class="col-2 col-form-label">
  74. <label for="">Номер телефона:</label>
  75. </div>
  76. <div class="col-sm-10">
  77. <input class="form-control" type="tel" name="phone" id="">
  78. </div>
  79.  
  80. </div>
  81. <div class="form-group row">
  82. <div class="col-2 col-form-label">
  83. <label for="">Сообщение:</label>
  84. </div>
  85. <div class="col-sm-10">
  86. <textarea class="form-control" name="message" id="" cols="30" rows="10"></textarea>
  87. </div>
  88.  
  89. </div>
  90. <div class="form-group row">
  91. <div class="col-2 col-form-label">
  92. </div>
  93. <div class="col-sm-10">
  94. <input type="submit" class="btn btn-primary " value="Отправить">
  95. </div>
  96. </div>
  97. </fieldset>
  98. </form>
  99. </div>
  100.  
  101.  
  102.  
  103. package.json
  104.  
  105. {
  106. "name": "mysite",
  107. "version": "1.0.0",
  108. "description": "",
  109. "main": "server.js",
  110. "scripts": {
  111. "test": "echo "Error: no test specified" && exit 1",
  112. "start": "node server.js"
  113. },
  114. "author": "",
  115. "license": "ISC",
  116. "dependencies": {
  117. "body-parser": "^1.17.2",
  118. "cookie-parser": "^1.4.3",
  119. "express": "^4.15.3",
  120. "express-handlebars": "^3.0.0",
  121. "express-session": "^1.15.3",
  122. "formidable": "^1.1.1",
  123. "mailparser": "^2.0.5",
  124. "nodemailer": "^4.0.1",
  125. "sendgrid": "^5.1.2",
  126. "xoauth2": "^1.2.0"
  127. }
  128. }
  129.  
  130. server.js
  131.  
  132. const express = require('express');
  133. const bodyParser = require('body-parser');
  134. const nodemailer = require('nodemailer');
  135. const app = express();
  136. const handlebars = require('express-handlebars').create({
  137. defaultLayout: 'main'
  138. });
  139. const urlencodedparser = bodyParser.urlencoded({extended: false})
  140. app.engine('handlebars', handlebars.engine);
  141. app.set('view engine', 'handlebars');
  142. app.set('port', process.env.PORT || 3000);
  143.  
  144. app.use(express.static(__dirname + '/public'));
  145.  
  146. app.get('/', function (req, res) {
  147. res.render('home');
  148. });
  149.  
  150. app.get('/feedback', function (req, res) {
  151. res.render('feedback')
  152. });
  153.  
  154. app.post('/feedback', urlencodedparser, function (req, res) {
  155. var mailOpts, smtpTrans
  156. smtpTrans = nodemailer.createTransport('SMTP', {
  157. service: 'Yandex',
  158. host: 'smtp.yandex.ru',
  159. port: 465,
  160. secure: true,
  161. auth: {
  162. user: 'mymail@yandex.ru',
  163. pass: 'mypass'
  164. }
  165. });
  166.  
  167. mailOpts = {
  168. from: req.query.username + ' <' + req.query.email + '>' +
  169. req.query.phone + '>',
  170. to: 'radik.machete@gmail.com',
  171. subject: 'Обратная связь',
  172. text: req.query.message
  173. };
  174.  
  175. smtpTrans.sendMail(mailOpts, function (err, res) {
  176. if (err) {
  177. console.log('Ошибка');
  178. } else {
  179. console.log('Почта отправлена');
  180. }
  181. });
  182.  
  183. })
  184. app.use(function (req, res) {
  185. res.status(404);
  186. res.send('404');
  187. });
  188.  
  189. app.use(function (err, req, res, next) {
  190. console.error(err.stack);
  191. res.status(500);
  192. res.render('500');
  193. });
  194. app.listen(app.get('port'), function () {
  195. console.log('Приложение запущено на http://localhost:' +
  196. app.get('port'));
  197. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement