nodemailer.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* Import modules. */
  2. import moment from 'moment'
  3. import nodemailer from 'nodemailer'
  4. import PouchDB from 'pouchdb'
  5. import util from 'util'
  6. import { call } from '@nexajs/rpc'
  7. import superagent from 'superagent'
  8. import { v4 as uuidv4 } from 'uuid'
  9. /**
  10. * Start Daemon
  11. */
  12. export async function start(_databases) {
  13. let id
  14. let address
  15. let body
  16. let response
  17. let results
  18. /* Generate id. */
  19. id = uuidv4()
  20. /* Add record to database. */
  21. response = await notifsDb
  22. .put({
  23. _id: id,
  24. ...body,
  25. })
  26. .catch(err => {
  27. console.error(err)
  28. return res.json(err)
  29. })
  30. const msgFrom = '"Nexa Events" <[email protected]>'
  31. const msgRecipient = '[email protected]'
  32. const msgSubject = 'NEXA Transaction Event'
  33. const msgDetails = {
  34. txid: 'd465b82e9d9e74a19b5ea0ac09308be93be8e5f3b46ad8ceb0da99005b7e9b2e',
  35. }
  36. // create reusable transporter object using the default SMTP transport
  37. const transporter = nodemailer.createTransport({
  38. host: process.env.SMTP_HOST,
  39. port: 587,
  40. secure: false, // true for 465, false for other ports
  41. auth: {
  42. user: process.env.SMTP_USER,
  43. pass: process.env.SMTP_PASS,
  44. },
  45. })
  46. // send mail with defined transport object
  47. const info = await transporter.sendMail({
  48. from: msgFrom,
  49. to: msgRecipient,
  50. subject: msgSubject,
  51. text: require('../templates/plaintext')(msgDetails),
  52. html: require('../templates/html')(msgDetails),
  53. })
  54. console.log('Message sent: %s', info.messageId)
  55. /* Send response back to client. */
  56. res.json({
  57. databaseId: response.id,
  58. messageId: info.messageId,
  59. })
  60. }
  61. /**
  62. * Test Daemon
  63. *
  64. * Performs various tests to ensure the daemon is performing as expected.
  65. */
  66. export async function test(_databases) {
  67. let id
  68. let response
  69. /* Set databases. */
  70. const sessionsDb = _databases.sessions
  71. const method = 'getwalletinfo'
  72. const params = []
  73. /* Set node options. */
  74. const options = {
  75. username: 'user', // required
  76. password: 'password', // required
  77. host: '127.0.0.1', // (optional) default is localhost (127.0.0.1)
  78. port: '7227', // (optional) default is 7227
  79. }
  80. response = await call(method, params, options)
  81. // console.log('RPC RESPONSE\n', response)
  82. id = 'd5113e8e-d2c1-416f-aa8e-cbdb54f7e718'
  83. response = await sessionsDb
  84. .get(id)
  85. .catch(err => {
  86. console.error(err)
  87. })
  88. console.log('DB RESPONSE', response)
  89. }