แแฆแแก แฉแแแ แจแแแฅแแแแ แ.แฌ. Yandex แคแฃแแฅแชแแ (แแคแแชแแแแฃแ แ แกแแฎแแแ
แแแช แขแ แแแแชแแฃแแ แกแแ แแแ แแแแก แแแฌแแแแแฆแแแแแ (แแฆแแแ แคแแแแขแแแแแก แแแ แแจแ) แแ แ.แฌ. แกแแ แแแ แแ (แกแแ แแแ แแก แแแ แแจแ) แแแแแฌแงแแแขแแแแแแแ, แ แแแแแ แแ แแแแฌแแแก (แแ แแแแแแแแแ แแ แแแชแ แ แแแแ ) แกแแ แแแ แแแแก แแแแแแแกแขแ แแ แแแ, แแ แแแ แฃแแแขแแก, แแแแแแแฎแแแ แแ แ, แ แแแแกแแช แแกแแแ แแ แแ แแก แแแขแแแ แแฃแแ. แกแฎแแ แ แแ แแ แแก แคแฃแแฅแชแแแแ. แแแฆแแช แแแกแแฎแฃแ แแแ แแแ แฃแฉแแแแ แแ แแ แแแฎแแ แแฎแแแแ แแแ แแแก. 2019 แฌแแแก แแฅแขแแแแ แแก แแแกแแฌแงแแกแจแ Yandex-แแ แฌแแ แแแแแแแแ แแแแแกแ Yandex Cloud แคแฃแแฅแชแแแแ - แ แแแแ แช แฉแแแก, แแแ แแแแแ แ แฃแกแแแแก แคแแแแ แแชแแแจแ แกแแ แแแ แแ. แแ แ แแช แแแแกแแแฃแแ แแแแ แกแแกแแแแแแแแ, แแก แแ แแก, แ แแ แแแแกแแก แฃแแแ แแแแกแแแแก แแกแแแ แแแแแแแ แแแแแกแฃแคแแแแ, แแแแขแแ แแกแแแ แแแก แจแแแแแ แฉแแแก แแแ แแคแแ แแฃแ แฎแแแแแจแ แแ แแแ. แแแแ แแ แแแแ แแแแแฌแงแแ แฃแแแ.
แฌแแ แแแแแแแแแแ แแก แกแชแแแแ แ. แแฅแแแแ แแแแแชแฎแแแ (แแแแแแแแแ, แแแแกแแก แฃแแแ แ
แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ Yandex แคแฃแแฅแชแแแแ แฉแแแแฌแแ แแแแก แแแแแแแแ แแแแแชแแแแ แแแแแจแ Cloud Firestore แฉแแแ แฃแแแ แแฃแงแฃแ แแ แแแก แกแแฎแแแแซแฆแแแแแแแจแ
1. แจแแฅแแแแแ แแแแแ แแจแ SendGrid-แจแ
แจแแแแจแแแSendGrid แแฎแแแแ แฉแแแ แแ แฉแแแแแแ, แ แแแแแแช แแ แแแแแแแแ แ แแแแแแแแ แแแแแแแก แแแแ, แแแแแแ แ แแก แแ แแก, แ แแ แแแ แแฅแแ แแแ SDK Node.js-แแกแแแแก. แแฅแแแ แจแแแแซแแแแ แแแ แฉแแแ แแแแแกแแแแ แ แกแฎแแ แกแแคแแกแขแ แกแแ แแแกแ.
แแแแแ แแแแแแแแแ
แจแแแแแ แแขแแแแ แฉแแแ แแแ แฉแแแ Node.js:
แจแแแแแแ แฉแแแ แแแฃแจแแแแแ แฉแแแแ API-แแแกแแฆแแแแก แกแแฎแแแ (แแแกแแฆแแแแแแก แฉแแแแแแแแแแจแ แแแแแฉแแแแแ แแฎแแแแ แแแแกแแแจแ แแ แแ แแคแแ แ แแฅแแก แกแแแ แแ แฉแแแแก แแแแแแแ แแแแแแ; แแ แฃแแ แแแแ แแแแแแแขแแแ แฃแฎแ แฌแแแแ แแแแ-แแแ-แแแกแแฆแแแ) แแ แแแแญแแ แแ แฆแแแแแก แแแกแแฆแแแแก แจแแฅแแแ:
แแแกแแฆแแแแก แแแแแ แแ แแแ แแแฎแแแแ, แฉแแแ แแแแแแแแแ แแแ แแแก แแ แจแแแแแแฎแแแ แงแแแแแแ แฆแ แแแ. แแ แแแแฅแแแแ แแแ แแแ แฆแแแแแแ แจแแแแแฌแแแ แแแขแแแ แแชแแ, แ แแแแ แช แฅแแแแแ แแแชแแแฃแ แกแฃแ แแแแ, แแแแ แแ แฏแแ แแ แแแแแฌแแแแฃแแแแ, แแแแ แแ แแแแแแแแแ แแแแแก แแแฌแแ แแแ:
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. แแแแกแขแแแฃแ แ แฉแแแแ แแ.แคแแกแขแแก แแแแแแแกแขแฃแ แแแแแ แแแแฌแแแแก แแ.แคแแกแขแแก แแแกแแแแ แแก แแแแแแแแแแ (แ แแแแ แแแ แแแแฎแแแ แแแจแแแแ?), แแแแ แแ แแฃ แแแ แฌแแฃแแแแฃแแ แแแ แ (แแก แฃแแแ แแแแ แฎแแแแ แจแแแแฌแแแ แฉแแแแก แแแ แแจแ), แแ แแแญแแ แแแแ แแแกแ แแแกแขแแแแชแแ (แแ, แ แ แแฅแแ แฃแแแ, แฉแแแ แแ แฃแแแ แจแแแแแแฌแแแ แแแ แแแแจแ). แแแแกแขแแแฃแ แ แฉแแแแ แแแขแแแแ แจแแฅแแแแแแ แคแแแแแแแ แฉแแแแฌแแ แแแแก แฌแแกแแแแแฎแแ .แแแ แ แแแแ แช แแแจแแแแแก แชแแแแแแแ. แแแแ แแ แจแแแแแ Yandex แคแฃแแฅแชแแแแ แจแแกแแซแแแแแแแ แแ แชแแแแแแแแก แแแแแแแกแแแ แแแ แแแแแ แแแจแแแแแก แแแ แแแแจแ. แฒ แแแแ ? - แฅแแแแแ แแแฉแแแแแ. แแแแขแแ แแแแแขแ แแแขแแแแ แแฅแแแ แแกแแแ แแ แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แแแ แแ แคแแแแ .แแแ - แแ แจแแฅแแแแ แแ แแแแแแ แแฃแแแ แแแแ แแ แแก แคแแแแจแ index.js แแ แจแแชแแแแ. แแแแ แแ แแฅ แฉแแแ แแแแแแแกแขแแแแ แแ แแก แแแแแขแ, แแแแขแแ แแฅแแแแ แคแแแแแแก index.js ะธ .แแแ:
touch index.js
touch .env
แคแแแแจแ index.js แแแฌแแ แแ แแแแแก 22 แฎแแแ, แ แแแแแแช แแแฉแแแแแแแ แแแแแ แแแชแแแฃแ แแแ แแแแก แกแฃแ แแแแ (แแฎแแแแ แฎแแแจแ #8 แจแแชแแแแแ แแฅแแแแ แแแคแแกแขแ) แแ แคแแแแจแ .แแแ - (แงแแแแแแแแ แ แแ แญแงแแแแแแกแ แแ แแฃแแฅแขแฃแแชแแแก แแแ แแจแ) แแแฃแแแแแ แฌแงแแแแ - แแแกแแฆแแแแก แกแแฎแแแ/แแแแจแแแแแแแ 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 แแ.แคแแกแขแแก แจแแชแแแ; แจแแฅแแแแแ แคแแแแ root แแแ แแฅแขแแ แแแจแ .แแแ, แแ แแแกแจแ แแแฃแแแแแ แแแกแแฆแแแแก แกแแฎแแแ/แแแแจแแแแแแแ API, แ แแแแ แช แแแแแ แแ แแก แแแฉแแแแแแ.
3. แแแแแแแแแ
แแแข-แแแแแแแแ แแแแคแแแ แแ แแแขแแแฃแ แแ แจแแกแแฎแแ Yandex.Cloud แแ แ แแแแ แแแแแแแแแกแแ แแแ แแฅ Yandex แคแฃแแฅแชแแแแ แแฆแฌแแ แแแแ แฉแแแก แกแขแแขแแแจแ
แฒจแแฅแแแ zip-แแ แฅแแแ (แแแแแ แฅแแแ, แแแแแแแแแ, mailer.zip), แ แแแแแจแแช แฉแแแ แจแแแแขแแแ แแแ แแฅแขแแ แแแก แแแแแซแแก_แแแแฃแแแแ แแ แคแแแแแแ .env, index.js - แงแแแแแคแแ แ แฉแแแแ แแ แแแฅแขแแก แแแขแแแแแแแแ:
แฉแแแ แแฅแแแแ แคแฃแแฅแชแแแก แกแแฎแแแแ... แกแฌแแ แแ - แคแแกแขแแแแแแ, แแแ แชแฎแแแ แแแแแแแชแแแก แแแแแฃแจแ แจแแแแแแแ แ แ แแแแฅแขแแ แ, แจแแแแกแแ แกแแญแแ แ แแแแแแ แแ แแแแแแแ แฉแแแแ แแแ ZIP แแ แฅแแแ แฉแแแแขแแแ แแแ แฉแแแแ แแ แฅแแแ mailer.zip:
แแ แแฅ แแ แแก แฉแแแแขแแแ แแแแก แแแ แ แแแฎแกแแแแแ แแแ แแแแขแ API แแแกแแฆแแแ แแแ แแแแแ แแฅ, แแแแ แ แแ แแแฅแขแจแ แคแแแแแก แจแแฅแแแ .แแแแแ แแ แแแแแแกแขแแแแ แแ แแแแแขแ แแแขแแแแ. แแแแ แแ แฉแแแ แฃแแแ แแแแแแแแแ แแก แงแแแแแคแแ แ, แแแแขแแ แแ แแแฉแแแแแ แแฎแแแแ แแแคแแ แแแชแแแกแแแแก. แแแฃ แแฃแแแแ แแแ แแ แแ แแก แกแแญแแ แ!
แแฎแแ แแแแ แแแ แฏแแแแ แแฃแแฎแแจแ แแแแญแแ แแ แฆแแแแแก แแแ แกแแแก แจแแฅแแแแแ แแแแแแแแ แ แแแแแแแแ แฌแแแก. แ แแแแกแแช แงแแแแแคแแ แ แแแแ แแฅแแแแ, แฉแแแ แแแขแแแแขแฃแ แแ แแแแแแแแ แแแแงแแคแแแแแแจแ แแแแแฎแแแแก. แแฅ แฉแแแ แแแแแแฅแขแแฃแ แแแ แแแ แแแแขแก แกแแแแแแแแแแ แแแ แคแฃแแฅแชแแแ แแแ แแฅแแแ แจแแซแแแ แแแกแแแ แฃแ แแแแ แแแแ แแแ แ แกแแแงแแ แแแแ.
แแฅแแแ แฎแแแแแ แแฃแ แฏ แแแฃแแก แฌแแ แฌแแ แแก แกแแแแ แแกแแแ แแ แแแ แแแแแก แแแแแ? แแแแฌแแแแฃแแแ. แแ แแฃแแแ แแก แชแแ แแแแ แคแแแฏแแ แ แแแแฎแกแแแแ... แแแแ แแ แแแแแแแแ - แแ แแแแแฆแ แแ.แฌแแ แแแ:
แแฎแแ แจแแแแซแแแแ แแแแ แฃแแแแ แแแแกแแแจแ SendGridแแ แแแแญแแ แแ แฆแแแแแก แจแแแแแฌแแแ แแแขแแแ แแชแแ. แกแแกแขแแแ แงแแแแแคแแ แก แจแแแแแฌแแแแก แแแแแกแ แแ แฎแแแแ แแ แจแแแแแแ แฃแแแ แแแแแ แฃแแแก แแกแแแ แแแ แแแ:
แแกแ แแแ, แแแญแแแ (แแ แแแแแแแ, แ แ แแฅแแ แฃแแแ) - แงแแแแแคแแ แ แแแ แแแแช แซแแแแแ แแแ แขแแแ แแ แแแแแแแขแฃแ แแ! แแแแแ แแฅแแแแ แกแขแแขแแแแ. แแฃ แแแแแแก แแแแขแแ แแกแแแก แแกแแแแกแ แ แแแแก แฌแแแแแฎแแ, แแแแแแฌแแ แแ, แ แแ แแ แแแแแขแแแแ.
4. แจแแแแฌแแ แฃแแแแแแ
แฌแงแแ แ: www.habr.com