Интеграция облачных функций mailgun и firebase - PullRequest
0 голосов
/ 04 февраля 2019

Я пытался использовать mailgun для отправки информации на указанную учетную запись электронной почты.Я использую платную версию как Mailgun, так и Firebase.Я пробовал следующее:

Очевидно, что это только одна из моих функций.В этой функции я устанавливаю баланс пользователя на 0 и отправляю электронное письмо на учетную запись электронной почты со значением.

Но я даже не могу отправить электронное письмо без информации ...

var mailgun = require('mailgun-js')({
  apiKey: 'key-MY_KEY', 
  domain: 'https://api.mailgun.net/v3/MY_DOMAIN/messages'
})
exports.initiateBankPayout = functions.https.onRequest((request, response) => {
  // Ensure there is authorization data in the request header
  if (!request.headers.authorization || !request.headers.authorization.startsWith('Bearer ')) {
    console.log("Unauthorized request")
    // Return forbidden status code
    return response.sendStatus(403)
  }

  let idToken
  if (request.headers.authorization && request.headers.authorization.startsWith('Bearer ')) {
    idToken = request.headers.authorization.split('Bearer ')[1]
  }

  // Verify the requestor's credentials
  const authPromise = admin.auth().verifyIdToken(idToken)

  return authPromise.then((user) => {
    const userId = user.user_id

    const db = admin.database()
    const userBalanceRef = db.ref(`users/${userId}/availableBalance`)

    return Promise.all([userBalanceRef.once("value"), userBalanceRef])
  }).then(([currentBalance, userBalanceRef]) => {
    // Transaction promise to set user's balance to $0
    const balanceAdjustment = userBalanceRef.transaction((currentBalance) => {
      return "0"
    })

    // Fulfillment callback will be passed a boolean success parameter, and the balance before the adjustment
    return Promise.all([balanceAdjustment, currentBalance.val()])
  }).then(([committed, previousBalance]) => {
    if (committed && committed.committed) {
      /** 
       * INSERT CODE FOR SENDING EMAIL HERE
       * use previousBalance arguemnt to get the balance prior to adjustment
       **/

       var dt = {
        from: 'Excited User <mailgun@MY_DOMAIN.com>',
        subject: 'Welcome!',
        html: `<p>Welcome! ${user.name}</p>`,
              'h:Reply-To': 'mailgun@MY_DOMAIN.com',
        to: 'email@gmail.edu',
        //text: 'Testing some Mailgun awesomeness!'
      };

      mailgun.messages().send(dt, function (error, body) {
        console.log(body);
        console.log(error);
      });
       //end of new stuff

      return response.send({
        data: {
          success: true
        }
      })
    }

    // If committed === false, then an undefined error occurred
    return response.status(500).send("Internal error: user balance adjustment failed")
  }).catch((err) => {
    console.error(err)
    return response.status(500).send(`Internal error: ${err}`)
  })
})

Я думаю, что, возможно, при инициализации apiKey: 'key-My_Key' мне нужен apiKey: 'key-' или другой формат?

Я пытался искать в Интернете, но большинство людей, которые спрашиваютВопросы такого рода - это те, кто не оплатил услугу.Любая подсказка о том, как сделать это для кого-то, кто на самом деле платит?Я не знаю, в чем здесь может быть ошибка.

...