email.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const { Email } = require('../models/email.model');
  2. const { User } = require('../models/user.model');
  3. const nodemailer = require('nodemailer');
  4. const config = require('../config/config.json');
  5. // post email
  6. exports.sendEmail = async (req, res, next) => {
  7. if (req.query) {
  8. var query = {}
  9. // if (req.query.lastname) { query.lastname = req.query.lastname }
  10. // if (req.query.firstname) { query.firstname = req.query.firstname }
  11. if (req.query.email) { query.email = req.query.email }
  12. if (req.query.isactive) { query.isActive = req.query.isactive }
  13. if (req.query.isgain) { query.isGain = req.query.isgain }
  14. }
  15. const email = new Email({
  16. title: req.body.title,
  17. subject: req.body.subject,
  18. text: req.body.text,
  19. description: req.body.description
  20. });
  21. if (req.body.title && req.body.subject && req.body.text) {
  22. const user_db = await User.find(query, { email: 1 })
  23. const user_db_email = user_db.map(x => x.email)
  24. var smtpTransport = nodemailer.createTransport({
  25. host: config.email.host,
  26. port: config.email.port,
  27. secure: true,
  28. auth: { user: config.email.user, pass: config.email.pass },
  29. tls: { rejectUnauthorized: false }
  30. });
  31. var mailOptions = {
  32. to: user_db_email,
  33. from: config.email.user,
  34. subject: req.body.subject,
  35. text: req.body.text
  36. };
  37. email.save().then(() => {
  38. smtpTransport.sendMail(mailOptions)
  39. .then(() => res.status(200).json(email))
  40. .catch((e) => res.status(500).json({ success: false, message: `${e}` }))
  41. }).catch(() => res.status(500).json({ success: false, message: `Erreur dans le serveur` }))
  42. } else {
  43. res.status(400).json({ success: false, message: `Veuillez renseigner le titre et l'objet et le contexte du mail` })
  44. }
  45. };
  46. // get email
  47. exports.getEmail = async (req, res, next) => {
  48. Email.find({})
  49. .then((email) => { res.status(200).json(email) })
  50. .catch( () => { res.status(500).json({success: false, message: 'erreur dans le serveur'}) })
  51. }