рдмрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ
const functions = require('firebase-functions')
const express = require('express')
const cors = require('cors')
const mailService = require('@sendgrid/mail')
const bodyParser = require('body-parser')
//Constants
const SENDGRID_API_KEY = 'Myapikey'
//Set up
const app = express()
app.use(bodyParser.json())
app.use(cors({ origin: true }))
app.post('/send', async (req, res) => {
mailService.setApiKey(SENDGRID_API_KEY)
const { name, email, message } = req.body
const emailContent = {
to: '[email protected]',
from: '[email protected]'',
subject: `subject`,
text: `some message`,
}
try{
const response = await mailService.send(emailContent)
res.json({message: 'message sent'})
} catch(error){
const { message, code, response } = error
res.json({message, response})
}
})
exports.api = functions.https.onRequest(app)
рдПрдХ DNS рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд╣реАрдВ рдФрд░ рдкрдврд╝рд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ) рдХрд┐ рдЖрдкрдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдмрд╛рд╣рд░реА рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреБрдЧрддрд╛рди рдпреЛрдЬрдирд╛ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
@ рдЕрд░реЛрдЪ
рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдирд╣реАрдВ, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдлрд╛рдпрд░рдмреЗрд╕ рдореБрджреНрджрд╛ рдпрд╛ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж
рдкреАрдПрд╕: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рддреИрдирд╛рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ? рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореЗрд░рд╛ рдХрд╛рд░реНрдп рд▓рд╛рдЗрд╡ рд╣реИ
@arock рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╕рдЪ рдерд╛: https://firebase.google.com/support
рдФрд░ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддрд╛ рдерд╛ред
рдзрдиреНрдпрд╡рд╛рдж
рдпрд╣ рдПрдХ рдлрд╛рдпрд░-рдмреЗрд╕ рдореБрджреНрджрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдлреНрд░реА (рд╕реНрдкрд╛рд░реНрдХ рдкреНрд▓рд╛рди) рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреЗрд╡рд▓ Google рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
https://firebase.google.com/pricing/
рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ (рдлреНрд▓реЗрдо рдкреНрд▓рд╛рди рдпрд╛ рдмреНрд▓реЗрдЬрд╝ рдкреНрд▓рд╛рди) рдЖрдк SendGrid рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдИрдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
@ kadnan0900 рдореИрдВрдиреЗ рдмреНрд▓реЗрдЬрд╝ рдкреНрд▓рд╛рди рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА getaddrinfo ENOTFOUND api.github.com api.github рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреЙрдо: 443 рддреНрд░реБрдЯрд┐ред
рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдлрд┐рд░ рджреЛрдмрд╛рд░рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдлрд╛рдпрд░рдмреЗрд╕ рдореЗрдВ рдмреНрд▓реЗрдЬрд╝ рдпреЛрдЬрдирд╛ рдкрд░, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рд╕рд╣реА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреНрд░реЗрдбрд┐рдЯ рд╕рд╣реА рд╣реИрдВред рдлрд╛рдпрд░рдмреЗрд╕ рдПрдореБрд▓реЗрдЯрд░/рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг, рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
"@sendgrid/mail": "^7.1.1",
"firebase-admin": "^8.12.1",
"firebase-functions": "^3.6.2"
рдПрдХ DNS рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд╣реАрдВ рдФрд░ рдкрдврд╝рд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ) рдХрд┐ рдЖрдкрдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдмрд╛рд╣рд░реА рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреБрдЧрддрд╛рди рдпреЛрдЬрдирд╛ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рддреИрдирд╛рддреА рдкрд░ рдирд╣реАрдВ
рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдлрд┐рд░ рджреЛрдмрд╛рд░рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдлрд╛рдпрд░рдмреЗрд╕ рдореЗрдВ рдмреНрд▓реЗрдЬрд╝ рдпреЛрдЬрдирд╛ рдкрд░, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рд╕рд╣реА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреНрд░реЗрдбрд┐рдЯ рд╕рд╣реА рд╣реИрдВред рдлрд╛рдпрд░рдмреЗрд╕ рдПрдореБрд▓реЗрдЯрд░/рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг, рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
"@sendgrid/mail": "^7.1.1", "firebase-admin": "^8.12.1", "firebase-functions": "^3.6.2"
рдХреЛрдЗ рднрд╛рдЧреНрдп? рд╣рдо рд╕реНрд╡рдпрдВ рдмреНрд▓реЗрдЬрд╝ рдпреЛрдЬрдирд╛ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ DNS рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд╣реАрдВ рдФрд░ рдкрдврд╝рд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ) рдХрд┐ рдЖрдкрдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдмрд╛рд╣рд░реА рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреБрдЧрддрд╛рди рдпреЛрдЬрдирд╛ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?