ืืืื ื ืืฆืืจ ืืช ืื ืฉื ืงืจื. ืคืื ืงืฆืืืช Yandex (ืฉื ืจืฉืื
ืื ื ืื ืืชื ืื (ืืื ืืื ืงื ืืืช) ืฉื ืฉืจืชืื ืืกืืจืชืืื, ืืชืืื ืืื ืฉื ืงืจื. ืืื ืฉืจืช ืคืชืจืื ืืช (ืืื ืฉืจืช), ืื ืื ื ืื ืืืื (ืืื ื ืื ืืืฉ ืืืืข ืืื) ืื ืื ืฉืจืชืื, ืืขืื ืืืชืจ ืืื, ืืฉืื ืขื ืืืื ืฉืื ืื ื ืืขื ืื. ืืืจ ื ืืกืฃ ืืื ืคืื ืงืฆืืืช. ืืืฉืื ื ืืชื ืืื ืฉืืจืืช ืืืขืืื, ืืื ื ืืฉืื ืจืง ืขื ืฉืืืืช. ืืชืืืืช ืืืงืืืืจ 2019 ืืฆืืื Yandex ืืช ืฉืื ืคืื ืงืฆืืืช ืขื ื ืฉื Yandex - ื ืจืื ืฉืืื ืืจืืฉืื ืืคืืจืฆืื ืืจืืกืืช ืืื ืฉืจืช. ืืื ืฉื ืืื ืืืืืื ืืื ืฉืืืืฉืืจืื ืฉื ืืืืก ืื ืืืจื ืืื ืืืคืฉืืื, ืื ืื ื ืืฆืืื ืืจืืืื ืืืืงืคืืช ืฉืื ืืื. ืืื ืืืื ื ืชืืื ืืืจ.
ืืืื ื ืืืืื ืืช ืืชืจืืืฉ ืืื. ืืืืฉืื ืฉืื (ืืืืืื, ืืืืืื ืืช ืฉื ืืืืก
ืขื ืืื ื ืคืื ืงืฆืืืช Yandex ืืืฆืข ืขืจืืื ืืืกื ืื ืชืื ืื ืขื ื Firestore ืืืจ ืืกืชืืื ื ืขื ืื ืืืืจืื
1. ืฆืืจ ืืฉืืื ื- SendGrid
ืฉืื ืืSendGrid ืืื ืจืง ืืืืืจื ืฉืื, ืฉืขืฉืืชื ืืืื ืกืืืืช, ืืืขืืงืจืืช ืืื ืฉืืฉ ืืื SDK ืืืื ืขืืืจ Node.js. ืืชื ืืืื ืืืืืจ ืื ืฉืืจืืช ืืืืืจ ืืืจ.
ืืื ื ืืฉืื ืืืื
ืืฉืื ืืื ืื ื ืืืืจืื Node.js:
ืืื ืื ืื ื ืืืืขืื ืขื ืขืืืจ ืฉืื ื APIืฉื ืืืคืชื (ืืืฆื ืจืง ืืงืื ืกืืื ืืจืฉืืืช ืืืคืชืืืช, ืืืื ืื ืฉืื ืงืฉืจ ืืงืื ืืขืชืืื ืฉืื ื; ืืจืืข ืืืขืชื ืืงืื ืืืชื ืืชืืื ืืืืื-API-key) ืืืืฅ ืขื ืืืคืชืืจ ืฆืืจ ืืคืชื:
ืืืคืชื ืืืืืฆืจ, ื ืขืชืืง ืืืชื ืื ืฉืืืจ ืขืืื ืืืืืืื ืืขืืืง ืืืืชืจ. ืืืืื ืื ื ืืกื ืขื ืืคืชืืจ ืืืช ืืื ืืืจืฆืื, ืืื ืืชืืื ื ืืืื, ืืื ืขืืืื ืื ื ืืืฅ ืขืืื, ืืื ืืืื ื ืขืืืจ ืืืชืืืช ืืงืื:
2. ืืชืืืช ืงืื
ืืื ืืงืื ืขืฆืื, ืืคื ืฉืืชื ืืืื ืืจืืืช, ืงืื ืขื ืืื ืืืืื - 22 ืฉืืจืืช!
ืืฉืืจื #8 ืืืืื ืฉืื ืืงืืื ืงืฉื (ืืืื ืืืกืชืจ ืืืืืฉื ืืช) - ื ื ืืฆืืื ืืช ืฉืื. ืืืืื ืืืืืชืืื, ื ืงืื ืืช ืื ืื ืชืื ืื (ืืืื ืืืืื) ืืืืืืืงื ืืืจืืข. ืืืฉื, ืื ืืฉืืื POST ืืืืืืงื ื ืฉืื ืืคืื ืงืฆืื ืฉืื ื ืืืฉืชืืฉ ืขื ืฉืื (ื ืืก) ืืืืื, ื ืืชื ืืงืื ืืช ืืขืจื ืฉื ืฉืื ืื ืื:
const { user } = event;
const email = user.email;
ืืื ืืชืืืช ืืืืื ืืืขืืจืช ืืคืื ืงืฆืื ืืืืฆืขืืช ืืฉืืื ืืงืื, ืืืืืื: https://functions.yandexcloud.net/123abc?[email protected]
ืขืจื ืคืจืืืจ ืืืืื ืืชื ืืืื ืืืฉืื ืืช ืื ืืื:
const email = event.queryStringParameters.email;
ืืื ืืืกืชืื ืื ืืืืืง ืืืื ืืืคืฅ ืืืจืืข, ืืชื ืืืื ืืืฆืืจ ืืช ืืคืฉืื ืืืืชืจ ืคืื ืงืฆืืืช Yandex ืืกืืื ืืช ืื ืขื ืฉืืืืชืืช:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
ืื ื ืืื ืืืชืจ ืคืืจืื (ืื ืคืืืช ืืจืืจ) ืืชืืขืื ืืจืฉืื
ืื, ืฆืืจ ืกืคืจืืืช ืคืจืืืงื (ืืืืืื, ืืืืจ), ืขืืืจ ืืืื, ืืชืื ืืช ืืคืจืืืงื, ืืชืงื ืชืืืช:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
ืืื ื ืืจืฉืช ืจืง ืืืืืื @sendgrid/mail. ืฉืงืืช ืคืืกืืืง ืืืืช ืืืืืื ืืืืง ืืช ืชืงืคืืช ืืชืืืช ืืืืื (ืืื ืื ื ืืืฉืชื ืืื?), ืืื ืื ืื ืื ื ืืืืืื ืืื (ืื ืืืจ ื ืืืง ืืืจ ืืจืื ืืื ืืืขืืื ื), ืื ืื ื ืื ืฆืจืืืื ืืืชืงืื ืืช ืื (ืืฉื ืืืืื, ืื ืื ื ืื ืฆืจืืืื ืืืืืง ืืช ืื ืืงืื). ืฉืงืืช ืคืืกืืืง dotenv ื ืืขื ืืงืจืื ืจืฉืืืืช ืืงืืืฅ .v ืืืฉืชื ื ืืื ืจืืฆื. ืืื ื ืคืื ืงืฆืืืช Yandex ืืคืฉืจ ืืืงื ืืช ืืืฉืชื ืื ืืืื ืืฉืืจืืช ืืกืืืืช ืืื ืืจืืฆื. ืึตืื? - ืื ื ืืจืื ืืช ืื ืืืื. ืืื ืืืืืื dotenv ืืชื ืื ืื ืืืื ืืืชืงืื ืืช ืื ืืืช ืืงืืืฅ .v - ืื ืืืฆืืจ, ืืืืงืืื ืืงืื ื ืืฆื ืืงืืืฅ index.js ืื ืชืฉืชื ื. ืืื ืืื ืืชืงื ื ืืช ืืืืืื ืืื, ืื ืื ืื ื ืืืฆืจืื ืงืืฆืื index.js ะธ .v:
touch index.js
touch .env
ืืงืืืฅ index.js ืืชืื 22 ืฉืืจืืช ืงืื ืืืืฆืืืช ืืฆืืืื ืืืกื ืืืขืื (ืจืง ืืฉืืจื #8 ืฉื ื ืืช ืืืืืืื ืฉืื), ืืืงืืืฅ .v - (ืืื ืื ืืืจืืืืช ืื ืกืืื ื ืคืืกืืง) ืฆืืื ืืช ืืืื - ืฉื/ืขืจื ืืคืชื APIืฉืงืืืื ื ืืืืจืื ื ืืงืื ืกืืื SendGrid:
SENDGRID_API_KEY=ืืืคืชื-ืืืืื-ืกืืื-sendgrid-api-ืฉืื
ืืื ืืชื ืจืืฆื ืคืืืช ืขืืืื, ืฉืืื ืืช ืืืืืจ ืืืชืงื ืืช ืืืืืืืช:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
ืืงืืืฅ index.js, ืืฉืืจื #8 ืฉื ื ืืชืืืช ืืืืืื; ืืืฆืืจ ืงืืืฅ ืืกืคืจืืืช ืืฉืืจืฉ .v, ืืื ืฆืืื ื ืืช ืืฉื/ืขืจื ืฉื ืืืคืชื API, ืืคื ืฉืืืฆื ืืขืื.
3. ืคืจืืกื
ืคืืืช ืื ืืืชืจ ืืจืืจ ืืืคืืจื ืืืืืช Yandex.Cloud ืืืื ืืืงื ืืืชื ืฉื ืคืื ืงืฆืืืช Yandex ืืืชืืืจ ืืืืืจ ืฉืื
ืื ืื ื ืืืฆืจืื zip-ืืจืืืื (ืืื ื ืงืจื ืืื, ืืืฉื, mailer.zip), ืฉืื ืื ื ืืืืืื ืืช ืืกืคืจืืื ืฆืืืช_ืืืืืืื ืืงืืฆืื โ.env, index.js - ืืื ืืงืืืื ืืคืจืืืงืืื ืฉืื ื:
ืื ื ืืืฆืจืื ืคืื ืงืฆืื ืขื ืืฉื... ื ืืื - ืืืืจ, ืืชืคืจืื ืื ืืืื ืืฉืืืื ืื ื ื ืื ืกืื ะ ะตะดะฐะบัะพั, ืืื ืืช ืืฉืืืช ืื ืืจืฉืื ืืขืืืจ ืืืจืืืกืืื ืืจืืืื ZIP ืืืืจืื ืืช ืืืจืืืื ืฉืื ื mailer.zip:
ืืื ื ืืืคืฉืจืืช ืฉืืืืืจื ืงืืื ืืืืจืื ืืคืชื API ืืฉืืจืืช ืืื, ืืืงืื ืืืฆืืจ ืงืืืฅ ืืคืจืืืงื .v, ืืื ืชืชืงืื ืืช ืืืืืื dotenv. ืืื ืืืจ ืขืฉืื ื ืืช ืื ืื, ืื ืื ื ืืจืื ืืช ืื ืจืง ืืืืืข. ืืืืืจ, ืืื ืฆืืจื ืืฉืืคื!
ืืขืช, ืืคืื ื ืืืื ืืช ืืขืืืื ื, ืืืฅ ืขื ืืืคืชืืจ ืฆืืจ ืืจืกื, ืืืืชื ืืื ืฉื ืืืช. ืืฉืืื ืืืื ืืืื, ื ืขืืืจ ืืืืืืืืช ืืืืืจ ืกืงืืจื. ืฉื ื ืคืขืื ืืช ืืืคืฉืจืืช ืชืคืงืื ืฆืืืืจืืื ืฉืชืืื ืืชืงืฉืจ ืืืชื ืืืขืืื ืืืืฆืื.
ืืชื ืจืืื ืืช ืืงืืฉืืจ ืืืืื ืืื ืืืืชืื ืงืืฉืืจ ืฉืืื? ืืืฅ ืขืืื. ืืืคืชื ืืืื ืืคืืคื ืจืืง... ืืื ืจืืข - ืงืืืืชื ืืืื:
ืขืืฉืื ืืชื ืืืื ืืืืืจ ืืงืื ืกืืื SendGrid, ืืืืฅ ืขื ืืืคืชืืจ ืืืช ืืื ืืืจืฆืื. ืืืขืจืืช ืชืืืืง ืืื ืืจื ืืขืจืืฆืื ืฉืื, ืืืชืืฆืื ืืื ืืื ืืืืจื ืืืืืืจ ืืกื ืืื:
ืืื, ืืืจ'ื (ืืื ืืช, ืืืืื) - ืืื ืืืืช ืืืื ืคืฉืื ืืืืื ืื! ืืืื ืขืื ืืืืจืื. ืื ืืืฉืื ืืขืื ืืื ืืงืจืื ืืฉืื ืืื, ืืืจืฉืื ืืื ืื ืืคืกืคืก.
4. ืชืจืืืืช
ืืงืืจ: www.habr.com