我一直在尝试使用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-'或其他格式?
我尝试过在线查找,但是大多数提出此类问题的人都是那些没有为此付费的人。关于如何为实际付费的人做到这一点的任何线索?我不知道这里可能有什么错误。