เชเชเซ เชเชชเชฃเซ เชเชนเซเชตเชพเชคเชพ เชฌเชจเชพเชตเซเชถเซเช. เชฏเชพเชจเซเชกเซเชเซเชธ เชเชพเชฐเซเชฏ (เชธเชคเซเชคเชพเชตเชพเชฐ เชจเชพเชฎ
เชนเซเช เชชเชฐเชเชชเชฐเชพเชเชค เชธเชฐเซเชตเชฐเซเชธเชจเซ เชตเชฟเชฐเซเชงเซ (เชชเชฐเชเชคเซ เชเชเซเชเชฐเชคเชพ เชตเชฟเชจเชพ) เช
เชจเซ เชเชนเซเชตเชพเชคเชพ เชธเชฎเชฐเซเชฅเช เชชเชฃ เชเซเช. เชธเชฐเซเชตเชฐ เชตเชฟเชจเชพ (เชธเชฐเซเชตเชฐเชฒเซเชธ) เชธเซเชฒเซเชฏเซเชถเชจเซเชธ, เชเชพเชฐเชฃ เชเซ เชฎเชจเซ เชธเชฐเซเชตเชฐเซเชธเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเซเช เชเชฎเชคเซเช เชจเชฅเซ (เช
เชจเซ เชเชฐเซเชเชฐ เชเซเชตเซ เชฐเซเชคเซ เชเชฌเชฐ เชจเชฅเซ) เช
เชจเซ เชคเซเชฅเซ เชชเชฃ เชตเชงเซ - เชเซเชฏเชพเชฐเซ เชคเซเช เชฒเซเชก เชจ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ เชธเชฎเชฏ เชฎเชพเชเซ เชเซเชเชตเชฃเซ เชเชฐเชตเซ. เชฌเซเชเซ เชตเชธเซเชคเซ เชเชพเชฐเซเชฏเซ เชเซ. เชฎเชพเชฐเชพ เชตเชฟเชจเชพ เชเซเช เชคเซเชฎเชจเซ เชธเซเชตเชพ เชเชฐเซ เชเซ, เช
เชจเซ เชนเซเช เชซเชเซเชค เชเซเชฒเซเชธ เชฎเชพเชเซ เชเซเชเชตเชฃเซ เชเชฐเซเช เชเซเช. เชเชเซเชเซเชฌเชฐ 2019 เชจเซ เชถเชฐเซเชเชคเชฎเชพเช, เชฏเชพเชจเซเชกเซเชเซเชธเซ เชคเซเชจเซ เชฐเชเซเชเชค เชเชฐเซ เชฏเชพเชจเซเชกเซเชเซเชท เชเซเชฒเชพเชเชก เชเชพเชฐเซเชฏเซ - เชฐเชถเชฟเชฏเชจ เชซเซเชกเชฐเซเชถเชจเชฎเชพเช เชชเซเชฐเชฅเชฎ เชนเซเชตเชพเชจเซเช เชเชฃเชพเชฏ เชเซ เชธเชฐเซเชตเชฐ เชตเชฟเชจเชพ. เช
เชจเซ เชเชพเชธ เชเชฐเซเชจเซ เชธเชฐเชธ เชตเชพเชค เช เชเซ เชเซ เชเชฒเชฟเชธเชจเซ เชเซเชถเชณเชคเชพ เชฎเชพเชเซ เชคเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฎเชซเชค เชเซ, เชคเซเชฅเซ เชคเซเช เชคเซเชฏเชพเชฐเชฅเซ เชฎเชพเชฐเซ เชชเซเชฐเชฟเชซเซเชฐเชฒ เชตเชฟเชเชจเชฎเชพเช เชเซ. เชชเชฐเชเชคเซ เชเชพเชฒเซ เชชเชนเซเชฒเชพเชฅเซ เช เชถเชฐเซ เชเชฐเซเช.
เชเชพเชฒเซ เช เชฆเซเชถเซเชฏเชจเซ เชเชฒเซเชชเชจเชพ เชเชฐเซเช. เชคเชฎเชพเชฐเซ เช
เชฐเชเซ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชฒเชฟเชธเชจเซ เชเซเชถเชณเชคเชพ
เชเซเชตเซ เชฐเซเชคเซ เชฅเซ เชฏเชพเชจเซเชกเซเชเซเชธ เชเชพเชฐเซเชฏเซ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชเชจเซเชเซเชฐเซเช เชเชฐเซ เชเซเชฒเชพเชเชก เชซเชพเชฏเชฐเชธเซเชเซเชฐ เชเชชเชฃเซ เชคเซเชจเซ เชเซเชฏเซเชเซเชฐเซเชฏเชฒเชฎเชพเช เชเซเช เชฒเซเชงเซเช เชเซ
1. SendGrid เชฎเชพเช เชเชเชพเชเชจเซเช เชฌเชจเชพเชตเซ
เชจเซเชเชงเชฃเซSendGrid เช เชฎเชพเชคเซเชฐ เชฎเชพเชฐเซ เชชเชธเชเชฆเชเซ เชเซ, เชเซ เชฎเซเช เชเชฃเชพ เชเชพเชฐเชฃเซเชธเชฐ เชฌเชจเชพเชตเซ เชเซ, เชฎเซเชเซเชฏ เชเชพเชฐเชฃ เช เชเซ เชเซ เชคเซเชฎเชจเซ เชชเชพเชธเซ Node.js เชฎเชพเชเซ เชคเซเชฏเชพเชฐ SDK เชเซ. เชคเชฎเซ เชเซเชเชชเชฃ เช เชจเซเชฏ เชฎเซเชเชฒเชฟเชเช เชธเซเชตเชพ เชชเชธเชเชฆ เชเชฐเซ เชถเชเซ เชเซ.
เชเชฒเซ เชเชเชณ เชตเชงเซเช
เชเชเชฒเชพ เชชเชเชฒเชพเชฎเชพเช เชเชชเชฃเซ เชชเชธเชเชฆ เชเชฐเซเช เชเซเช Node.js:
เชเชเชณ เช
เชฎเซ เช
เชฎเชพเชฐเชพ เชฎเชพเชเซ เชธเชพเชฅเซ เชเชตเซเช เชเซเช API-เชเซ เชจเชพเชฎ (เชเซเชเชจเซ เชธเซเชเชฟเชฎเชพเช เชซเชเซเชค เชเชจเซเชธเซเชฒเชฎเชพเช เช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ, เช
เชจเซ เชคเซเชจเซ เชเชชเชฃเชพ เชญเชพเชตเชฟ เชเซเชก เชธเชพเชฅเซ เชเซเช เชฒเซเชตเชพเชฆเซเชตเชพ เชจเชฅเซ; เชนเซเช เชเช เช
เชตเชฟเชจเชพเชถเซ เชธเชพเชฅเซ เชเชตเซเชฏเซ เชเซเช เชกเซเชฎเซ-เชเชชเซเชเช-เชเซ) เช
เชจเซ เชฌเชเชจ เชฆเชฌเชพเชตเซ เชเซ เชฌเชจเชพเชตเซ:
เชเซ เชเชจเชฐเซเช เชฅเชถเซ, เช
เชฎเซ เชคเซเชจเซ เชเซเชชเซ เชเชฐเซเชถเซเช เช
เชจเซ เชคเซเชจเซ เชธเซเชฅเซ เชตเชงเซ เชตเชฟเชถเซเชตเชพเชธเชฎเชพเช เชฐเชพเชเซเชถเซเช. เช
เชจเซ เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เชฌเชเชจ เชธเชพเชฅเซ เชธเซเชเซเชฐเซเชจ เชนเชถเซ เชเชเซเชเชฐเชฃ เชเชเชพเชธเซ, เชจเซเชเซเชจเชพ เชเชฟเชคเซเชฐเชจเซ เชเซเชฎ, เชชเชฐเชเชคเซ เช
เชฎเซ เชนเชเซ เชธเซเชงเซ เชคเซเชจเซ เชเซเชฒเชฟเช เชเชฐเซเชถเซเช เชจเชนเซเช, เชชเชฐเชเชคเซ เชเชพเชฒเซ เชเซเชก เชฒเชเชตเชพ เชคเชฐเชซ เชเชเชณ เชตเชงเซเช:
2. เชเซเชก เชฒเชเชตเชพเชจเซ
เชชเชฐเชเชคเซ เชเซเชก เชชเซเชคเซ, เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชนเชพเชธเซเชฏเชพเชธเซเชชเชฆ เชฐเซเชคเซ เชจเชพเชจเซ เชเซ - 22 เชฒเซเชเซเช!
เชฒเชพเชเชจเชฎเชพเช #8 เชฎเชพเชฐเซ เชเชฎเซเชฒ เชนเชพเชฐเซเชกเชเซเชกเซเชก เชเซ (เช
เชจเซ เชคเซเชฅเซ เชถเชฐเชฎเชพเชณ เชฐเซเชคเซ เชเซเชชเชพเชฏเซเชฒ เชเซ) - เชเซเชชเชพ เชเชฐเซเชจเซ เชคเชฎเชพเชฐเซเช เชธเซเชเชตเซ. เชตเชพเชธเซเชคเชตเชฟเช เชเซเชตเชจเชฎเชพเช, เช
เชฎเซ เชคเชฎเชพเชฎ เชกเซเชเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชถเซเช (เชธเชนเชฟเชค เชเชฎเซเชเชฒ) เชชเชฆเชพเชฐเซเชฅเชฎเชพเชเชฅเซ เชเชเชจเชพ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชชเชฆเซเชงเชคเชฟ เชชเซเชธเซเช เชเชฌเซเชเซเชเซเช เชเชชเชฃเชพ เชเชพเชฐเซเชฏเชฎเชพเช เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเซเชทเซเชคเซเชฐ (เชฎเชฟเชฒเชเชค) เชธเชพเชฅเซ เชเชฎเซเชเชฒ, เช เชเซเชทเซเชคเซเชฐเชจเซเช เชฎเซเชฒเซเชฏ เช เชฐเซเชคเซ เชฎเซเชณเชตเซ เชถเชเชพเชฏ เชเซ:
const { user } = event;
const email = user.email;
เช
เชจเซ เชเซ เชเชฎเซเชฒ เชเชกเซเชฐเซเชธ เชชเชฆเซเชงเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชซเชเชเซเชถเชจเชฎเชพเช เชชเชธเชพเชฐ เชฅเชพเชฏ เชเซ เชฎเซเชณเชตเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ: https://functions.yandexcloud.net/123abc?[email protected]
เชชเชฐเชฟเชฎเชพเชฃ เชฎเซเชฒเซเชฏ เชเชฎเซเชเชฒ เชคเชฎเซ เชคเซเชจเซ เชเชจเซ เชเซเชฎ เชฎเซเชณเชตเซ เชถเชเซ เชเซ:
const email = event.queryStringParameters.email;
เชเชฌเซเชเซเชเซเชเชฎเชพเช เชฌเชฐเชพเชฌเชฐ เชถเซเช เชธเชฎเชพเชฏเซเชฒ เชเซ เชคเซ เชเซเชตเชพ เชฎเชพเชเซ เชเชเชจเชพ, เชคเชฎเซ เชธเซเชฅเซ เชธเชฐเชณ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ เชฏเชพเชจเซเชกเซเชเซเชธ เชเชพเชฐเซเชฏ เช เชจเซ เชคเซเชจเซ เชชเซเชฐเชถเซเชจเซ เชธเชพเชฅเซ เชเซเชตเชฟเชธเซเช เชเชฐเซ:
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 เชซเชพเชเชฒเชฎเชพเชเชฅเซ เชฐเซเชเซเชฐเซเชกเซเชธ เชตเชพเชเชเชตเชพ เชฎเชพเชเซ เชฐเชเชพเชฏเซเชฒ เชเซ .env เชฐเชจเชเชพเชเชฎ เชเชฒเซ เชคเชฐเซเชเซ. เชชเชฐเชเชคเซ เชฎเชพเช เชฏเชพเชจเซเชกเซเชเซเชธ เชเชพเชฐเซเชฏเซ เช เชเชฒเซ เชธเซเชงเชพ เชฐเชจเชเชพเชเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช เชฎเซเชเชตเซเช เชถเชเซเชฏ เชเซ. เชเซเชตเซ เชฐเซเชคเซ? - เชนเซเช เชคเซเชจเซ เชจเซเชเซ เชฌเชคเชพเชตเซเชถ. เชคเซเชฅเซ เชชเซเชเซเช dotenv เชคเชฎเซ เชคเซเชจเซ เช เชจเซ เชซเชพเชเชฒ เชชเชฃ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ .env - เชฌเชจเชพเชตเชถเซ เชจเชนเซเช, เช เชจเซ เชคเซ เช เชธเชฎเชฏเซ เชเซเชก เชซเชพเชเชฒเชฎเชพเช เชเซ index.js เชฌเชฆเชฒเซ เชจเชนเซเช. เชชเชฐเชเชคเซ เช เชนเซเช เช เชฎเซ เช เชชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฏเซเช เชเซ, เชคเซเชฅเซ เช เชฎเซ เชซเชพเชเชฒเซ เชฌเชจเชพเชตเซเช เชเซเช index.js ะธ .env:
touch index.js
touch .env
เชซเชพเชเชฒเชฎเชพเช index.js เชเชชเชฐเชจเชพ เชธเซเชเซเชฐเซเชจเชถเซเชเชฎเชพเช เชฆเชฐเซเชถเชพเชตเซเชฒ เชเซเชกเชจเซ 22 เชฒเซเชเซเช เชฒเชเซ (เชซเชเซเชค เชฒเซเชเซเชฎเชพเช #8 เชคเชฎเชพเชฐเซเช เชเชฎเซเชเชฒ เชฌเชฆเชฒเซ), เช
เชจเซ เชซเชพเชเชฒเชฎเชพเช .env - (เชเซเชเชชเชฃ เช
เชตเชคเชฐเชฃ เช
เชฅเชตเชพ เชตเชฟเชฐเชพเชฎเชเชฟเชนเซเชจเซ เชตเชฟเชจเชพ) เชเซเชกเซ เชธเซเชชเชทเซเช เชเชฐเซ - เชเซ เชจเชพเชฎ/เชฎเซเชฒเซเชฏ APIเชเซ เช
เชฎเซ เชคเชพเชเซเชคเชฐเชฎเชพเช เชเชจเซเชธเซเชฒเชฎเชพเช เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเซเช เชเซ SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key
เช เชจเซ เชเซ เชคเชฎเชจเซ เชเชเซเช เชเชพเชฎ เชเซเชเชคเซเช เชนเซเชฏ, เชคเซ เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชเซเชฒเซเชจ เชเชฐเซ เช เชจเซ เชชเซเชเซเชเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
เชซเชพเชเชฒเชฎเชพเช index.js, เชฒเชพเชเชจเชฎเชพเช #8 เช - เชฎเซเชเชฒ เชฌเชฆเชฒเซ; เชฐเซเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชซเชพเชเชฒ เชฌเชจเชพเชตเซ .env, เช เชจเซ เชคเซเชฎเชพเช เชเซเชจเซเช เชจเชพเชฎ/เชฎเซเชฒเซเชฏ เชฆเชฐเซเชถเชพเชตเซ เชเซ API, เชเชชเชฐ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ.
3. เชเชฎเชพเชตเช เชเชฐเซ
เชตเชฟเชถเซ เชตเชงเซ เชเซ เชเชเชพ เชธเซเชชเชทเซเช เช
เชจเซ เชตเชฟเชเชคเชตเชพเชฐ Yandex.Cloud เช
เชจเซ เชคเซเชจเซ เชคเซเชฏเชพเช เชเซเชตเซ เชฐเซเชคเซ เชฎเซเชเชตเซเช เชฏเชพเชจเซเชกเซเชเซเชธ เชเชพเชฐเซเชฏเซ เชฎเชพเชฐเชพ เชฒเซเชเชฎเชพเช เชตเชฐเซเชฃเชตเซเชฒ
เช เชฎเซ เชฌเชจเชพเชตเซเช เชเซเช เชเชฟเชช-เชเชฐเซเชเชพเชเชต (เชเชพเชฒเซ เชคเซเชจเซ เชเชนเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, mailer.zip), เชเซเชฎเชพเช เช เชฎเซ เชกเชฟเชฐเซเชเซเชเชฐเซเชจเซ เชธเชฎเชพเชตเซเชถ เชเชฐเซเช เชเซเช เชจเซเชก_เชฎเซเชกเซเชฏเซเชฒเซเชธ เช เชจเซ เชซเชพเชเชฒเซ .env, index.js - เช เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเช เชเซเชเชฒเซเชเชฎเชพเชเชฅเซ เชฌเชงเซเช:
เช
เชฎเซ เชจเชพเชฎ เชธเชพเชฅเซ เชซเชเชเซเชถเชจ เชฌเชจเชพเชตเซเช เชเซเช... เชฏเซเชเซเชฏ เชฐเซเชคเซ - เชฎเซเชเชฒเชฐ, เชกเชพเชฌเซ เชจเซเชตเชฟเชเซเชถเชจ เชฎเซเชจเซเชฎเชพเช เชเชชเชฃเซ เชฆเชพเชเชฒ เชเชฐเซเช เชเซเช เชเชกเชฟเชเชฐ, เชเชฐเซเชฐเซ เชซเซเชฒเซเชกเซเชธ เชญเชฐเซ เช
เชจเซ เชเซเชฌ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ เชเซเชช เชเชฐเซเชเชพเชเชต เช
เชฎเชพเชฐเชพ เชเชฐเซเชเชพเชเชตเชจเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซ mailer.zip:
เช
เชจเซ เช
เชนเซเช เชกเชพเชเชจเชฒเซเชก เชเชฐเชตเชพ เชฎเชพเชเซ เช
เชเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชตเชฟเชเชฒเซเชช เชเซ API เชเซ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชซเชพเชเชฒ เชฌเชจเชพเชตเชตเชพเชจเซ เชฌเชฆเชฒเซ เชธเซเชงเชพ เช
เชนเซเช .env, เช
เชจเซ เชชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชถเซ เชจเชนเซเช dotenv. เชชเชฐเชเชคเซ เช
เชฎเซ เช เชฌเชงเซเช เชชเชนเซเชฒเซเชฅเซ เช เชเชฐเซ เชฒเซเชงเซเช เชเซ, เชคเซเชฅเซ เชนเซเช เชซเชเซเชค เชฎเชพเชนเชฟเชคเซ เชฎเชพเชเซ เช เชฌเชคเชพเชตเซ เชฐเชนเซเชฏเซ เชเซเช. เชเชเชฒเซ เชเซ, เชกเซเชชเซเชฒเชฟเชเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ!
เชนเชตเซ เชเชชเชฐเชจเชพ เชเชฎเชฃเชพ เชเซเชฃเซ เชฌเชเชจ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เชธเชเชธเซเชเชฐเชฃ เชฌเชจเชพเชตเซ, เช
เชจเซ เชฅเซเชกเซ เชธเซเชเชเชก เชฐเชพเชน เชเซเช. เชเซเชฏเชพเชฐเซ เชฌเชงเซเช เชคเซเชฏเชพเชฐ เชฅเช เชเชพเชฏ, เชคเซเชฏเชพเชฐเซ เช
เชฎเซ เชเชชเชฎเซเชณเซ เชตเชฟเชญเชพเชเชฎเชพเช เชเชเชถเซเช เชเชพเชเชเซ. เชคเซเชฏเชพเช เชเชชเชฃเซ เชตเชฟเชเชฒเซเชชเชจเซ เชธเชเซเชทเชฎ เชเชฐเซเชถเซเช เชเชพเชนเซเชฐ เชเชพเชฐเซเชฏเชเซเชฅเซ เชคเชฎเซ เชฌเชนเชพเชฐเชจเซ เชฆเซเชจเชฟเชฏเชพเชฅเซ เชคเซเชจเซ เชธเชพเชฅเซ เชธเชเชชเชฐเซเช เชเชฐเซ เชถเชเซ.
เชคเชฎเซ เชถเชฟเชฒเชพเชฒเซเชเชจเซ เชตเชฟเชฐเซเชฆเซเชง เชตเชพเชฆเชณเซ เชฒเชฟเชเช เชเซเชถเซ เชฒเชฟเชเช เชชเชฐ เชเซเชฒ เชเชฐเซ? เชคเซเชจเซ เชเซเชฒเชฟเช เชเชฐเซ. เชเช เชเชพเชฒเซ เชฌเซเชฐเชพเชเชเชฐ เชตเชฟเชจเซเชกเซ เชเซเชฒเชถเซ... เชชเชฃ เชฐเชพเชน เชเซเช - เชฎเชจเซ เชเช เชเชฎเซเชฒ เชฎเชณเซเชฏเซ:
เชนเชตเซ เชคเชฎเซ เชเชจเซเชธเซเชฒ เชชเชฐ เชชเชพเชเชพ เชเชตเซ เชถเชเซ เชเซ SendGrid, เช
เชจเซ เชฌเชเชจ เชฆเชฌเชพเชตเซ เชเชเซเชเชฐเชฃ เชเชเชพเชธเซ. เชธเชฟเชธเซเชเชฎ เชคเซเชจเซ เชเซเชจเชฒเซ เชฆเซเชตเชพเชฐเชพ เชฌเชงเซเช เชคเชชเชพเชธเชถเซ, เช
เชจเซ เชชเชฐเชฟเชฃเชพเชฎเซ เชคเซเชฃเซ เชเชจเชพ เชเซเชตเซ เชธเซเชเซเชฐเซเชจ เชชเชฐเชค เชเชฐเชตเซ เชเซเชเช:
เชฌเชธ, เชเซเชเชฐเชพเช (เช
เชจเซ เชเซเชเชฐเซเช, เช
เชฒเชฌเชคเซเชค) - เชฌเชงเซเช เชเชฐเซเชเชฐ เชเซเชฌ เช เชธเชฐเชณ เช
เชจเซ เชญเชตเซเชฏ เชเซ! เชตเชงเซ เชฒเซเชเซ เชนเชถเซ. เชเซ เชเซเชเชจเซ เชเชจเชพ เชเซเชตเซเช เชเชเชเช เชตเชพเชเชเชตเชพเชฎเชพเช เชฐเชธ เชนเซเชฏ, เชคเซ เชธเชฌเซเชธเซเชเซเชฐเชพเชเชฌ เชเชฐเซ เชเซเชฅเซ เชคเชฎเซ เชเซเชเซ เชจ เชเชพเช.
4. เชฆเชพเชจ
เชธเซเชฐเซเชธ: www.habr.com