Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

60 righe
2.1 KiB

  1. import express from 'express'
  2. import cors from 'cors'
  3. import bodyParser from 'body-parser'
  4. import amqp from 'amqplib'
  5. // import nodemailer from 'nodemailer'
  6. import SibApiV3Sdk from 'sib-api-v3-sdk'
  7. import dotenv from 'dotenv'
  8. dotenv.config()
  9. const app = express()
  10. const queuePaylater = process.env.QUEUE_PAYLATER
  11. const queueNota = process.env.QUEUE_NOTA
  12. const senderEmail = process.env.SENDER_EMAIL
  13. var defaultClient = SibApiV3Sdk.ApiClient.instance
  14. var apiKey = defaultClient.authentications['api-key']
  15. apiKey.apiKey = process.env.SENDING_BLUE_API_KEY
  16. var apiInstance = new SibApiV3Sdk.TransactionalEmailsApi()
  17. var sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail()
  18. app.use(cors())
  19. app.use(bodyParser.json())
  20. app.get('/', (_req, res) => {
  21. res.status.send(200).send("Amigo Receipt Sender Service Homepage!")
  22. })
  23. amqp.connect(process.env.AMQP_SERVER).then(async conn=> {
  24. const ch = await conn.createChannel()
  25. const queuePaylaterExist = ch.assertQueue(queuePaylater, { durable : true });
  26. const queueNotaExist = ch.assertQueue(queueNota, { durable: true })
  27. if (queueNotaExist) {
  28. queueNotaExist.then(() => {
  29. return ch.consume(queueNota, async (msg) => {
  30. var messageBody = JSON.parse(msg.content.toString())
  31. console.log(`[*] Message Received! email : ${messageBody.email} and pesan : ${messageBody.html}`)
  32. sendReceipt(messageBody.email, messageBody.html)
  33. }, { noAck: true })
  34. }).then(() => {
  35. console.log('* Waiting for messages from queue ' + queueNota)
  36. })
  37. }
  38. }).catch(console.warn)
  39. function sendReceipt(recepientEmail, receipt) {
  40. var date = new Date()
  41. sendSmtpEmail = {
  42. sender: {email: senderEmail, name: process.env.SENDER_NAME},
  43. to: [{email: recepientEmail, name: 'Customer'}],
  44. subject: "test",
  45. textContent: "testing",
  46. htmlContent: receipt
  47. }
  48. apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) {
  49. console.log('API called successfully. Returned data: ' + data)
  50. console.log(date.toLocaleString())
  51. }, function(error) {
  52. console.error(error)
  53. })
  54. }