
ááŽááąáˇ ááťá˝ááşááąáŹáşáááŻáˇ áááşááŽá¸áááˇáş ááŤááąáŤáşááŹá Yandex ááŻááşááąáŹááşááťááş (áááŹá¸áááşáĄáááş ) á
áŹáááŻáˇáááşááąáŹááşáážáŻáážááˇáş áážááážááŻááşá¸ááąáŹááşáá˝ááşááźááşá¸ ááźáááşá¸ááťááşá¸á
á˝áŹ áĄáááşá
ááşááąááąáŹ áĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááś âáááşááźáŹâ ááąá¸áááŻáˇááŤáááş (ááąáŹááşááŹá፠- ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ááŻáśá¸ spam ááťáŹá¸ááᯠáááˇáşááťááşááźáááşááᯠááááŤáááş)á
ááťá˝ááşáŻááşáááş áááŻá¸ááŹááŹááŹááťáŹá¸á ááźááŻááşáááş (áááŻáˇááąáŹáş ááá°áááşáážáŻááážááá˛) áážááˇáş áááşá¸ááᯠááąáŹááşááśáá°ááźá
áşáááşá serverless (ááŹááŹáá˛áˇ) ááźáąáážááşá¸áááşá¸ááťáŹá¸ááᯠááťá˝ááşáŻááşáááźááŻááşááąáŹááźáąáŹááˇáş (ááŹááŹááťáŹá¸ááᯠá
áŽááśáááˇáşáá˝á˛áááşá¸ááᯠááťá˝ááşáŻááşááááşáááááŤ) áážááˇáş áááŻáˇáááşáááş áááşá¸áááŻáˇááᯠááááşááąáŹááşáááˇáşáĄááťáááşáĄáá˝ááş ááąá¸ááťáąááŤá ááąáŹááşáá
áşááŻá ááŻááşááąáŹááşááťááşáá˝áąááŤá áá
áşá
áŻáśáá
áşááąáŹááşáááş ááťá˝ááşáŻááşáááŤáᲠáááşá¸áááŻáˇááᯠáááşááąáŹááşáážáŻááąá¸áᏠááŻááşá¸ááąáŤáşáááŻáážáŻáĄáá˝ááşáᏠááťá˝ááşáŻááşááąá¸ááąáŹááşááŤáááşá 2019 ááŻáážá
áş áĄáąáŹááşáááŻááŹááĄá
áá˝ááş Yandex á áááşá¸ááĄááźáąáŹááşá¸ááᯠáááşááźáá˛áˇáááşá Yandex ááááşáááŻááşááŻááşááąáŹááşááťááşááťáŹá¸ - ááŻáážáŹá¸áááşáááąá¸áážááşá¸áá˝ááşáááááŻáśá¸ááźá
áşááŻáśááááşá serverless. áĄáá°á¸áááźááˇáş áááşá¸ááŹá
ááŹáážáŹ áĄá˛áá
áşá ááťá˝ááşá¸ááťááşáážáŻááťáŹá¸ááźáąáŹááˇáş áááşá¸áááŻáˇáááş ááąáá°ááťáĄáŹá¸ááźááˇáş áĄááá˛áˇááźá
áşáááşá áááŻáˇááźáąáŹááˇáş áááşá¸áááŻáˇáááş ááťá˝ááşáŻááşá áĄááśáĄááźááşáĄáŹááŻáśáá˝ááş áĄá
ááşáážáááąáá˛áˇáááşá ááŤááąáááˇáş á
áááŻááşááźááĄáąáŹááşá
ááŽááŹááşáááşá¸ááᯠá
áááşáá°á¸ááźááˇáşááĄáąáŹááşá áááşáááťážáąáŹááşáá˝ážáŹ (áĽáááŹá áĄá˛áá
áşáááťá˝ááşá¸ááťááşáážáŻ áááŻáááşá¸áááşá¸ááąáŹááşá¸áááşá Yandex ááŻááşááąáŹááşááťááşááťáŹá¸) áá
áşááťá
áşáááşááŻááşááŻááşáá
áşááŻáááşáá°áááş ááŻáśá¸á
á˝á˛áá°áĄáŹá¸ ááááşááąáŤáşáááşá áĽáááŹá áĄáááŻáá˝áąá¸ááťááşá
ááŹááťáŹá¸áážááˇáş áá˝áąááąá¸ááťáąáážáŻáá
áşááŻááźáŻááŻááşáááşá áĄááťááŻáˇááąáŹáá˝áąááąá¸ááťáąáážáŻá
áá
áş (áážáŻááşáá˝áąá¸ááŻáśáážááˇáşáááşáá°áááşá ) áá˝áąááąá¸ááťáąáážáŻááᯠááŻááşááąáŹááşááźáŽá¸ áááşááąá¸ááąáŹááşáááˇáş ááááşá
áŹáááŻáˇ ááąá¸áááŻáˇá፠(ááťá˝ááşáŻááşáááŻáˇááś ááŻááşá¸áááşáááş áááˇáşááşáá
áşáᯠáážáááŤáááşá Yandex ááŻááşááąáŹááşááťááşááťáŹá¸) áááş HTTP- áá˝áąááąá¸ááťáąáážáŻáĄááąá¸á
áááşááťáŹá¸ááźá
áşáááˇáş áááŹáá áĄáááşáĄááźááˇáşáĄá
áŻáśá ááŻááşá¸ááśááŤááşáážááˇáş áá˝áąááąá¸ááťáąáá°á áĄáŽá¸ááąá¸ááşáááŻáˇááŤáážáááąáŹ ááąáŹááşá¸áááŻááťááşá ááťá˝ááşáŻááşáááŻáˇáááş á¤ááąááŹááᯠáá
áşáááşá¸áá
áşááŻáś ááŻááşááąáŹááşáááŻáááşá áĽáááŹ- áááŹáááᯠá
á
áşááąá¸ááŤá ááąááŹááąáˇá
áşáá˝ááş áááˇáşááťáąáŹáşááąáŹ áááˇáşáá˝ááşá¸áážáŻááťáŹá¸ááᯠááźáŻááŻááşááŤá áĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááś ááąá¸áááŻáˇááŤá á
áŹááᯠи áĄáŽá¸ááąá¸ááşááááşá
Ꮰáá˝áąááąá¸ááťáąáážáŻáááşááśááážáááźáąáŹááşá¸áĄáááşááźáŻááźááşá¸áážááˇáş ááąáŹááşáááşáá˝ážááşááźáŹá¸ááťááşááťáŹá¸áážááˇáşáĄáá°á ááŽááąáŹáˇ áááŻááˇáşáááŻááşááᯠáááŻááşááááŻáááşááąáŹááşáážáŻ.
áááşáááŻáĄááźáąáŹááşá¸ááźáąáŹááˇáşáá˛á Yandex ááŻááşááąáŹááşááťááşááťáŹá¸ ááąááŹááąáˇá áşáá˝ááşáááˇáşáá˝ááşá¸áážáŻááťáŹá¸ááźáŻááŻááşááŤá Cloud Firestore áĄá˛ááŤááᯠááťá°áááŻááŽáááşáážáŹ ááźááˇáşááŹá¸ááźáŽá¸ááŹá¸ (áĄááŹáááşáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáŹá¸ááąááŹááąáˇá áşáĄáá˝ááş áĽáááŹáá áşááŻááᯠá ááşá¸á áŹá¸áááááˇáşáááş- ) áĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááś áááşáá˛áˇáááŻáˇ ááąá¸áááŻáˇááááşáááşá¸á á áŹááᯠáážááˇáşááťá˝ááşáŻááşáááŻáˇáááťážáąáŹááşáá˝ážáŹáážááˇáşáĄáá°ááąáŤááşá¸á ááş Yandex.Money - áááąá¸ááąáŹáˇáá˛áˇáĄááŹáááşáážáŹ ááťá˝ááşááąáŹáşáááŻáˇ áážááşá¸áááşá áᲠá áŹáá˝áąáááŻáˇááŹáááŻáᲠá áááŻááşááĄáąáŹááşá
1. SendGrid áá˝ááş áĄááąáŹááˇáşáá áşááŻáááşááŽá¸ááŤá
áá˝áąáŹáááŻSendGrid áááş áĄááźáąáŹááşá¸áĄááťááŻá¸ááťááŻá¸ááźáąáŹááˇáş ááťá˝ááşáŻááşááźáŻááŻááşáá˛áˇááąáŹ ááťá˝ááşáŻááşááá˝áąá¸ááťááşáážáŻááŹááźá áşááźáŽá¸á áĄááááĄááťááşáážáŹ áááşá¸áááŻáˇáá˝ááş Node.js áĄáá˝ááş áĄáááşáááˇáşááŻááşááŹá¸ááąáŹ SDK áážááááşá áĄááźáŹá¸á áŹáááŻáˇáááşááąáŹááşáážáŻááᯠáááşáá˝áąá¸ááťááşáááŻááşááŤáááşá
áááşááźááĄáąáŹááş áĄá˛ááŽáážáŹ áážááşááŻáśáááşááąáŹááşááźááˇáşááŤá ááźáŽá¸áááş ááŤáááŻáˇáá˝áŹá¸áááşá Dashboardáááşá¸áá˝ážááşáážáŻáĄáááˇáşáá˝ááş áá˝áąá¸ááťááşááŤá áĄáŽá¸ááąá¸ááş API -> ááąáŤááşá¸á ááşá¸ááźááşá¸áááşá¸áá˝ážááşáážááˇáş áááşááĄáááˇáşáá˝ááş - Web API áááŻ ĐśĐ¸ĐźĐ°ĐśĐ¸ĐźĐ°ĐľĐźĐşĐ˝ĐžĐżĐşŃ áážáąá¸áááťáź. áĄáŹá¸ááŻáśá¸á ááŻáśáážáŹááźááŹá¸áá˛áˇáĄáááŻááşá¸ááŤáá˛

ááąáŹááşáá
áşáááˇáşáá˝ááş ááťá˝ááşáŻááşáááŻáˇ áá˝áąá¸ááťááşááŤá Node.js:

ááąáŹááşáá
áşááŻá ááŤáááŻáˇáĄáá˝ááş áááşááŹáááşá API áááŻ-key áĄáááş (ááąáŹáˇááťáŹá¸á
áŹáááşá¸áá˝ááş áá˝ááşáááŻá¸ááşáá˝ááşáᏠááźááááşááźá
áşááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇá áĄááŹáááşááŻááşáážááˇáş ááŹáážááááŻááşááŤá ááťá˝ááşáŻááşáááş áááťááşá
áŽá¸áááŻááşááąáŹ ááŻááşáá
áşááŻááźááˇáş ááąáŤáşááŹááŤáááşá demo-api-key) áááŻááşáááŻáážáááşááŤá ááąáŹáˇáááşááŽá¸ááŤá:

ááąáŹáˇáááŻááŻááşááąá¸áááşááźá
áşááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇá áááşá¸ááᯠáá°á¸áá°ááźáŽá¸ áĄáááşáážááŻááşá¸ááŻáśá¸ááŻáśááźááşáážáŻáá˝ááş ááááşá¸áááşá¸ááŹá¸áááşááźá
áşáááşá ááźáŽá¸ááąáŹáˇ ááŤáááŻáˇáážáŹ áááŻááşáá
áşááŻááŤáá˛áˇ ááťááşáážáŹááźááşáá
áşáᯠáážááááşá ááąáŤááşá¸á
ááşá¸áážáŻááᯠáĄáááşááźáŻááŤááĄáąáŹááşááŻáśááŤáĄáááŻááşá¸á ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠááážáááşáááąá¸ááŤá áááŻáˇááąáŹáş ááŻááşáááŻááąá¸áááş áááşáá˝áŹá¸ááźááŤá
ááŻáˇá

2. ááŻááşááąá¸ááźááşá¸á
ááŤááąáááˇáş ááŻááşáááŻááşáááŻááşá ááźááşáá˛áˇáĄáááŻááşá¸ áááşá ááŹááąáŹááşá¸ááąáŹááşáĄáąáŹááş ááąá¸áááşááŤáááş - 22 áááŻááşá¸á

áááşá¸áááşááŹá
áŽáááş #8 ááťá˝ááşáŻááşááĄáŽá¸ááąá¸ááşáááş hardcoded ááźá
áşáááş (áááŻáˇááźáąáŹááˇáş áážááşáá˝áśáˇá
á˝áŹ áážááşááŹá¸áááş) - ááťáąá¸áá°á¸ááźáŻá áááˇáşáĄááźáąáŹááşá¸ ááąáŹáşááźááŤá áááşáá˝áąáˇáááá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş ááąáᏠ(áĄááŤáĄáááş) áĄáŹá¸ááŻáśá¸ááᯠáááşááśááážááááşááźá
áşáááşá áĄáŽá¸ááąá¸ááşá) áĄááŹááášááŻááž áĄááźá
áşáĄááťááş. áĽáááŹáááŻááááş áááşá¸áááşá¸ POST áĄááŹááášááŻáá
áşááŻáááş ááťá˝ááşáŻááşáááŻáˇáááŻááşááąáŹááşááťááşáááŻáˇ ááąá¸áááŻáˇáááşá áĄááŻáśá¸ááźáŻáá°ááᯠáĄáá˝ááş (áĄáááşááźáśááźáą)á áĄáŽá¸ááąá¸ááşáá¤áĄáá˝ááşááááşáááŻá¸ááᯠá¤áá˛áˇáááŻáˇááážááááŻááşáááş-
const { user } = event;
const email = user.email; áááşá¸áááşá¸ááᯠáĄááŻáśá¸ááźáŻá áĄáŽá¸ááąá¸ááşááááşá
áŹááᯠááŻááşááąáŹááşááťááşáááŻáˇ ááąá¸áááŻáˇááŤáá GETáĽáááŹ: https://functions.yandexcloud.net/123abc?email=user@example.com
áááˇáşáááşáááşáááŻá¸ áĄáŽá¸ááąá¸ááşá áááşá¤áá˛áˇáááŻáˇááááŻááşáááş-
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/ááąá¸ááş. ááááşá áá áşáĄáááş áĄáŽá¸ááąá¸ááş-áĄáááşááźáŻááąá¸áá° áĄáŽá¸ááąá¸ááşááááşá áŹááᯠáážááşáááşáážáŻ áážáááážá á á áşááąá¸áááş (ááťááşááťááşá¸ áááşáááŻááž áážááşá¸ááááŻáˇ áááá˛áˇááŤáá°á¸)á ááŤááąáááˇáş áĄá˛ááŤááᯠááąááťáŹáááş (ááťá˝ááşáŻááşáááŻáˇ áááŤáᲠáĄááťáááşáĄááąáŹáşááźáŹ á á áşááąá¸ááźáŽá¸ááŤááźáŽ)á áĄá˛ááŤááᯠáááˇáşáá˝ááşá¸áááŻáˇ ááááŻááŤáá°á¸á ááŻááşááŤáááşá ááŻááşáážáŹ á á áşá ááŹááááŻááŤáá°á¸)á ááááşá áá áşáĄáááş dotenv áááŻááşáá áşááŻááž áážááşáááşá¸ááťáŹá¸ááᯠáááşáááş ááŽáááŻááşá¸ááŻááşááŹá¸áááşá .env runtime variable ááťáŹá¸áĄááźá áşá ááŤááąáááˇáş Yandex ááŻááşááąáŹááşááťááşááťáŹá¸ á¤ááááşá¸áážááşááťáŹá¸ááᯠruntime áááş á ááşá¸ááťááşáá˝ááşáááŻááşáááŻááşáááˇáşáááŻááşáááşá áááşáááŻáá˛? - áĄáąáŹááşáážáŹ ááźááąá¸ááŤáááşá áááŻáˇááźáąáŹááˇáş áĄááŻááş dotenv áááşáááşá¸ áááşá¸ááᯠáááˇáşáá˝ááşá¸á ááááŤá .env - ááááşááŽá¸ááŤáážááˇáş áá áşááťáááşáááşá¸áážáŹáááş ááŻááşáááş áááŻááşáá˛áá˝ááş áážáááąáááşá index.js áááźáąáŹááşá¸áá°á¸á áááŻáˇááąáŹáş á¤ááąááŹáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş á¤áááşááąáˇááşáťááᯠáááˇáşáá˝ááşá¸ááŹá¸ááąáŹááźáąáŹááˇáş áááŻááşááťáŹá¸ááᯠáááşááŽá¸ááŤáááşá index.js и .env:
touch index.js
touch .env
áááŻááşáá˛áážáŹ index.js áĄááąáŤáşá screenshot áážáŹááźááŹá¸áá˛áˇ ááŻááş 22 ááźáąáŹááşá¸áááŻááąá¸á፠(á
áŹááźáąáŹááşá¸áá˛áážáŹáᏠ#8 áááşááĄáŽá¸ááąá¸ááşáááŻááźáąáŹááşá¸ááŤ) áážááˇáşáááŻááşáá˝ááş .env - (áĄáááŻá¸áĄááŹá¸ áááŻáˇáááŻááş ááŻááşááźááşááŻááşááááŤáá˛) áá˝á˛-ááąáŹáˇáĄáááş/áááşáááŻá¸ááᯠáááşáážááşááŤá API áááŻáá˝ááşáááŻá¸ááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇ áááźáŹááąá¸ááŽá ááážáááŹá¸ááąáŹ áĄááŹááťáŹá¸ SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key
áĄááŻááşáááşá¸áááŻááŤáá repository áááŻáá˝áŹá¸ááźáŽá¸ packages ááťáŹá¸ááᯠinstall ááŻááşááŤá
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
áááŻááşáá˛áážáŹ index.js, áááşá¸áááşááŹá áŽáááş #8 áĄáŽá¸ááąá¸ááşáááŻááźáąáŹááşá¸ááŤá root directory áá˝ááşáááŻááşáá áşááŻáááşááŽá¸ááŤá .enváááşá¸áá˝ááş ááąáŹáˇááĄáááş/áááşáááŻá¸ááᯠááąáŹáşááźááŤá API áááŻáĄááąáŤáşáážáŹááźááŹá¸áá˛áˇáĄáááŻááşá¸ááŤá
3. ááťááŹá¸ááŤá
áĄáááşá¸áážááˇáşáĄááťáŹá¸ áážááşá¸áážááşá¸áááşá¸áááşá¸áĄááąá¸á áááşáážááˇáş áááşáááşáááşá Yandex.Cloud áĄá˛ááŽáážáŹ áááşáááŻááąááŹááá˛á Yandex ááŻááşááąáŹááşááťááşááťáŹá¸ ááŤáˇááąáŹááşá¸ááŤá¸áá˝ááşááąáŹáşááźááŹá¸áááşá - áááááŹá¸ááááşáá°áá˝áąááᯠááŽáááŻááşááśááᯠáááŻáˇááąá¸ááźáŽá¸ áááźáŹá¸áá° (ááźááşááŹáá°áá˝áą) áá˛áˇ ááŻááşááźá áŹáĄáŻááşáááşááąá¸ (áĽááᏠááŻáśáá˛áˇ á áŹááŹá¸ááŤ)á
ááŤáááŻáˇáááşááŽá¸áááşá áá áş-archive (áĽáááŹá áĄá˛ááŤááᯠááąáŤáşááĄáąáŹááşá mailer.zip) áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áá˝ážááşááᯠáááˇáşáá˝ááşá¸ááŹá¸áááşá node_modules áážááˇáşáááŻááşááťáŹá¸ .envá index.js - ááťá˝ááşáŻááşáááŻáˇá áááąáŹááťááşáááşáááąáŹááşááž áĄááŹáĄáŹá¸ááŻáśá¸-

ááťá˝ááşáŻááşáááŻáˇáááş áĄáááşááźááˇáş ááŻááşááąáŹááşááťááşáá
áşááŻááᯠáááşááŽá¸áááş... áážááşáááşáááş - á
áŹáááŻáˇáááşáááşáĄáá˝ážááşá¸ááŽáá°á¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááˇáşáá˝ááşá¸ááŤá áĄááşááŽááŹáááŻáĄááşááąáŹáĄáá˝ááşááťáŹá¸áááŻááźááˇáşááŤá áááşááşáááŻáˇááźáąáŹááşá¸ááŤá á
áŹáááŻááşáážááşáááşá¸ ááťá˝ááşáŻááşáááŻáˇá archive ááᯠdownload ááŻááşááŤá mailer.zip:

á¤ááąááŹáá˝ááş ááąáŤááşá¸ááŻááşááŻááşáááş ááááşááąáŹáşááźááŹá¸ááąáŹ áá˝áąá¸ááťááşáážáŻááźá
áşáááşá API ááąáŹáˇ áááąáŹááťááşáá˝ááş áááŻááşáá
áşááŻáááşááŽá¸ááźááşá¸áááş á¤ááąááŹáá˝ááş áááŻááşáááŻááş .enváážááˇáş package áááŻááááşáááşááŤáážááˇáş dotenv. ááŤâááąáááˇáşâ ááťá˝ááşââááąáŹáşâáááŻáˇá ááŤâáá˝áąáĄááŻááşâááŻááşâááźáŽá¸ááźáŽáááŻáˇ ááááşá¸áĄááťááşáĄáááşáĄáá˝ááşâáᲠááźááŹááŤá áááŻáááŻáááşáážáŹá áá˝áŹá¸áááşááááŻáĄááşááŤá

ááᯠááŹáááşáĄááąáŤáşááąáŹááˇáşáážá áááŻááşááᯠáážáááşááŤá ááŹá¸áážááşá¸áááşááŽá¸ááŤáááźáŽá¸ááťážááş á
áášáááˇáşáĄáááşá¸áááşá
áąáŹááˇáşááŤá áĄáŹá¸ááŻáśá¸áĄáááşáááˇáşááźá
áşááąáŹáĄááŤá ááťá˝ááşáŻááşáááŻáˇáááş ááášááááŻáˇ áĄáááŻáĄááťáąáŹááşáá˝áŹá¸ááŤáááşá ááąááŻááťáĄááźááş. áĄá˛ááŽáážáŹááťááąáŹáşáááŻáˇ option ááᯠenable ááŤááááˇáşáááşá áĄááťáŹá¸áá°áážáŹááąáŹááşáá˝ááşááťááşááŤááž ááźááşáááášááŹáá˛áˇ áááá˝áąáˇáááşááśáááŻááşáážáŹááŤá

ááášáááşá¸áá˛áˇ áááˇáşááťááşáááş áĄááźáŹááąáŹááş áááˇáşááşááᯠáááşáá˝áąáˇááážáŹááŤá ááąáŤáşáááŻáááş áááˇáşááş? áĄá˛ááŤáááŻáážáááşááŤá áááŹáááąáŹááşáᏠáááşá¸áááŻá¸áá
áşáᯠáá˝ááˇáşááŹáááş... áááŻáˇááąáŹáş á
áąáŹááˇáşá፠- ááťá˝ááşáŻááş áĄáŽá¸ááąá¸ááşáá
áşá
áąáŹááş áááşááśááážááááş-

ááᯠáááşáááş console áááŻáˇááźááşáá˝áŹá¸áááŻááşáááşá SendGridáááŻááşáááŻáážáááşááŤá ááąáŤááşá¸á
ááşá¸áážáŻááᯠáĄáááşááźáŻááŤá. á
áá
áşáááş áááşá¸áááťááşáááşááťáŹá¸áážáá
áşáááˇáş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠá
á
áşááąá¸áááşááźá
áşááźáŽá¸ ááááşáĄááąááźááˇáş áááşá¸áááş á¤áá˛áˇáááŻáˇááąáŹ á
ááááşááᯠááźááşááąá¸ááááˇáşáááş-

ááŤáá˛á ááąáŹááşáťáŹá¸ááąá¸áá˝áą (ááááşá¸áááąá¸áá˝áąááąáŤáˇ) - áĄááŹáĄáŹá¸ááŻáśá¸áᏠááááˇáşááᯠáááŻá¸áážááşá¸ááźáŽá¸ áĄáśáááşáá˝ááşááťááŤáá˛á ááąáŹááşáááş ááąáŹááşá¸ááŤá¸áá˝áąáááşá¸ áážááááşá á¤áá˛áˇáááŻáˇááąáŹ áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááᯠá
áááşáááşá
áŹá¸áá°áááŻááşá¸ áááşááťááşááŤá áááşáá˝ááşáááśááĄáąáŹááş á
áŹáááşá¸áá˝ááşá¸áááŻááşááŤá
4. áážá°ááŤááşá¸áážáŻááťáŹá¸
source: www.habr.com
