ืืืึทื ื ืืืจ ืืืขืื ืืึทืื ืื ืึทืืื ืืขืจืืคืขื ืข. ืืึทื ืืขืงืก ืคืื ืงืฆืืข (ืืึทืึทืืืขืจ ื ืึธืืขื
ืืื ืืื ืืืื ืึท ืงืขืื ืขืจ (ืึธืืขืจ ืึธื ืคืึทื ืึทืืืืึทื) ืคืื ืืจืืืืฆืืื ืขืื ืกืขืจืืืขืจืก, ืืื ืึท ืกืึทืคึผืึธืจืืขืจ ืคืื ืื ืึทืืื ืืขืจืืคืขื ืข. ืกืขืจืืืขืจืืขืกืก (ืกืขืจืืืขืจืืขืกืก) ืกืึทืืืฉืึทื ื, ืืืืึทื ืืื ืืึธื ื ืื ืืื (ืืื ืืื ืืึธื ื ืื ืืึทืงืข ืืืืกื ืืื ืฆื) ืคืืจื ืกืขืจืืืขืจืก, ืืื ืืคืืื ืืขืจ ืึทืืื, ืืึทืฆืึธืื ืคึฟืึทืจ ืื ืฆืืื ืืืขื ืืื ืืขื ืขื ื ืืฉื ืืึธืืืื. ืื ืื ืืขืจ ืืึทื ืืื ืคืึทื ืืงืฉืึทื ื. ืขืืขืฆืขืจ ืกืขืจืืืืก ืืื ืึธื ืืืจ, ืืื ืืื ื ืึธืจ ืืึทืฆืึธืื ืคึฟืึทืจ ืงืึทืืืก. ืืื ืื ืึธื ืืืื ืคืื ืืงืืืืขืจ 2019, ืืึทื ืืขืงืก ืืขืจืืื ืื ืืืื ืืึทื ืืขืงืก ืงืืึธืื ืคืึทื ืืงืฉืึทื ื - ืืืื ื ืฆื ืืืื ืืขืจ ืขืจืฉืืขืจ ืืื ืื ืจืืกืืฉืข ืคืขืืขืจืืืฉืึทื ืกืขืจืืืขืจืืขืกืก. ืืื ืืืึธืก ืืื ืกืคึผืขืฆืืขื ืคืืึทื ืืื ืึทื ืคึฟืึทืจ ืึทืืืก ืก ืกืงืืื ืืื ืืขื ืขื ืืืื ืคืจืื, ืึทืืื ืืื ืืึธืื ืฉืืื ืืื ืืืื ืคึผืขืจืืคืขืจืึทื ืืขืืื ื ืืื ื. ืืืขืจ ืืืืืจ ืฉืืื ืื ืืืืื.
ืืื ืก ืืืึทืืืฉืึทื ืืขื ืกืฆืขื ืึทืจ. ืืืื ืึทืคึผืืึทืงืืืฉืึทื (ืืืฉื, ืึทืืืก ืก ืืงืืขืก
ืืืขืื ืืื ืคืื ืืึทื ืืขืงืก ืคืึทื ืืงืฉืึทื ื ืืึทืื ืืืื ืกื ืืื ืื ืืึทืืึทืืืืก ืืืึธืืงื ืคืืจืขืกืืึธืจืข ืืืจ ืืึธืื ืฉืืื ืืขืงืืงื ืืื ืืขื ืืืืึธืจืืึทื
1. ืฉืึทืคึฟื ืึท ืืฉืืื ืืื SendGrid
ืืึธืSendGrid ืืื ื ืึธืจ ืืืื ืืจืืจื, ืืืึธืก ืืื ืืขืืืื ืคึฟืึทืจ ืขืืืขืืข ืกืืืืช, ืืขืจ ืืืืคึผื ืืื ืึทื ืืื ืืึธืื ืึท ืคืึทืจืืืง ืกืืง ืคึฟืึทืจ Node.js. ืืืจ ืงืขื ืขื ืงืืืึทืื ืงืืื ืื ืืขืจืข ืืืืืื ื ืืื ืกื.
ืืืืืจ ืืืืืืขืจ ืืืื
ืืื ืืขืจ ืืืืึทืืขืจ ืฉืจืื ืืืจ ืืืืกืงืืืึทืื Node.js:
ืืืืึทืืขืจ ืืืจ ืงืืืขื ืึทืจืืืฃ ืืื ืืื ืืืขืจ ืึทืคึผื- ืฉืืืกื ื ืึธืืขื (ืืืขื ืืืื ืืขืืืืื ืืืืื ืืื ืื ืงืึทื ืกืึธืื ืืื ืืขืจ ืจืฉืืื ืคืื ืฉืืืกืืขื, ืืื ืืื ืืึธืจื ืืฉื ืฆื ืืึธื ืืื ืืื ืืืขืจ ืฆืืงืื ืคึฟื ืงืึธื; ืืื ื ืึธืจ ืืขืงืืืขื ืึทืจืืืฃ ืืื ืึท ืืืคึผืขืจืืฉืึทืืึทื ืืขืืึธ-ืึทืคึผื-ืฉืืืกื) ืืื ืืจืืงื ืืขื ืงื ืขืคึผื ืฉืึทืคึฟื ืฉืืืกื:
ืืขืจ ืฉืืืกื ืืืขื ืืืื ืืืฉืขื ืขืจืืืืึทื, ืืืจ ืืืขืื ื ืึธืืืึทืื ืขืก ืืื ืืึทืืื ืขืก ืืื ืื ืืืคึผืึทืกื ืืืืื. ืืื ืืืจ ืืืขืื ืืึธืื ืึท ืคืึทืจืฉืืขืื ืืื ืึท ืงื ืขืคึผื ืืึทืฉืืขืืืงื ืื ืืขืืจืึทืืืึธื, ืืื ืืื ืื ืืืื ืืื ืื, ืึธืืขืจ ืืืจ ืืืขืื ื ืืฉื ืืื ืขืก ื ืึธื, ืึธืืขืจ ืืึธืื ืืื ืื ืืืื ืฆื ืฉืจืืืื ืื ืงืึธื:
2. ืฉืจืืืื ืงืึธื
ืืืขืจ ืื ืงืึธื ืืื, ืืื ืืืจ ืงืขื ืขื ืืขื, ืืื ืจืึทืืืงืืึทืืึทืกืื ืงืืืื - 22 ืฉืืจืืช!
ืืื ืืื ืืข #8 ืืืึทื ืืืืฆืคึผืึธืกื ืืื ืฉืืืขืจ ืงืึธืืขื (ืืื ืืขืจืืืขืจ ืฉืขืืขืืืืืง ืคืึทืจืืึธืจืื) - ืืืืข ืึธื ืืืืึทืื ืืืื. ืืื ืคืึทืงืืืฉ ืืขืื, ืืืจ ืืืขืื ืืึทืงืืืขื ืึทืืข ืื ืืึทืื (ืึทืจืืึทื ืืขืจืขืื ื email) ืคืื ืืืืคืขืฅ ืืขืฉืขืขื ืืฉ. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืขืจ ืืืคึฟื ืคึผืึธืกืื ืึท ืืืืคืขืฅ ืืื ืืขืฉืืงื ืฆื ืืื ืืืขืจ ืคึฟืื ืงืฆืืข ืืึทื ืืฆืขืจ ืืื ืคืขืื (ืคืึทืจืืึธื) email, ืื ืืืขืจื ืคืื ืืขื ืคืขืื ืงืขื ืขื ืืืื ืืืงืืืขื ืืื ืืึธืก:
const { user } = event;
const email = user.email;
ืืื ืืืื ืื E- ืืจืืื ืึทืืจืขืก ืืื ืืืจืืืขืืื ืืขื ืฆื ืื ืคึฟืื ืงืฆืืข ืืื ืืขื ืืืคึฟื ืืึทืงืืืขื, ืคึฟืึทืจ ืืืึทืฉืคึผืื: https://functions.yandexcloud.net/123abc?[email protected]
ืคึผืึทืจืึทืืขืืขืจ ืืืขืจื email ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืขืก ืืื ืืึธืก:
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 ืืืืืื ื ืฆื ืืืืขื ืขื ืจืขืงืึธืจืืก ืคืื ืึท ืืขืงืข .ืขื ืื ืืื ืจืื ืืืืข ืืืขืจืืึทืืึทืื. ืืืขืจ ืืื ืืึทื ืืขืงืก ืคืึทื ืืงืฉืึทื ื ืขืก ืืื ืืขืืืขื ืฆื ืฉืืขืื ืื ืืืขืจืืึทืืึทืื ืืืืึทื ืืื ืื ืจืื ืืืืข ืกืืืืืืข. ืืื? - ืืื ืืืขื ืขืก ืืืืึทืื ืืื ืื. ืืขืจืืืขืจ ืื ืคึผืขืงื dotenv ืืืจ ืงืขื ืขื ืืืื ื ืืฉื ืื ืกืืึทืืืจื ืขืก, ืืื ืื ืืขืงืข .ืขื ืื - ืืึธื ื ืื ืืึทืื, ืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืื ืงืึธื ืืื ืืื ืืขืจ ืืขืงืข index.js ื ืืฉื ืืืืฉื. ืึธืืขืจ ืืึธ ืืืจ ืืึธืื ืืื ืกืืึทืืืจื ืืขื ืคึผืขืงื, ืึทืืื ืืืจ ืืึทืื ืืขืงืขืก index.js ะธ .ืขื ืื:
touch index.js
touch .env
ืืื ืืขืงืข index.js ืฉืจืืึทืื 22 ืฉืืจืืช ืคืื ืงืึธื ืืขืืืืื ืืื ืื ืกืงืจืขืขื ืฉืึธื ืืืืื (ืืืืื ืืื ืื ืฉืืจื #8 ืืืืฉื ืืืื ืืืืฆืคึผืึธืกื), ืืื ืืื ืืขืจ ืืขืงืข .ืขื ืื - (ืึธื ืงืืื ืงืืืึธืืขืก ืึธืืขืจ ืคึผืื ืงืืืึทืฆืืข) ืกืคึผืขืฆืืคืืฆืืจื ืื ืคึผืึธืจ - ืฉืืืกื ื ืึธืืขื / ืืืขืจื ืึทืคึผืืืืึธืก ืืืจ ืืขืฆืื ืก ืืืงืืืขื ืืื ืื ืงืึทื ืกืึธืื ืกืขื ืืืจืื:
SENDGRID_API_KEY=ืืืื-ืืืืขืจ-ืกืื-sendgrid-api-key
ืืื ืืืื ืืืจ ืืืืื ืืืืื ืืงืขืจ ืึทืจืืขื, ืงืืึธืื ืื ืจืืคึผืึทืืึทืืึธืจื ืืื ืื ืกืืึทืืืจื ืื ืคึผืึทืงืึทืืืฉืึทื:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
ืืื ืืขืงืข index.js, ืืื ืืื ืืข #8 ืืืืฉื ืืืืฆืคึผืึธืกื; ืฉืึทืคึฟื ืึท ืืขืงืข ืืื ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ .ืขื ืื, ืืื ืืื ืขืก ืึธื ืืืืึทืื ืื ื ืึธืืขื / ืืืขืจื ืคืื ืื ืฉืืืกื ืึทืคึผื, ืืื ืืขืืืืื ืคึผืื ืงื ืืืืื.
3. ืฆืขืืืืงืืขื
ืืขืจ ืึธืืขืจ ืืืืื ืืงืขืจ ืงืืืจ ืืื ืืื ืืขืืึทื ืืืขืื Yandex.Cloud ืืื ืืื ืฆื ืฉืืขืื ืขืก ืืึธืจื ืืึทื ืืขืงืก ืคืึทื ืืงืฉืึทื ื ืืืกืงืจืืืื ืืื ืืืื ืึทืจืืืงื
ืืืจ ืืึทืื ืคืึทืจืฉืืขืกืืขื-ืึทืจืืฉืืืืข (ืืึธืืืจ ืจืืคื ืขืก, ืคึฟืึทืจ ืืืึทืฉืคึผืื, mailer.zip), ืืื ืืืึธืก ืืืจ ืึทืจืืึทื ื ืขืืขื ืื ืืืขืืืืืึทืืขืจ ื ืึธืืข_ืืึธืืืืขืก ืืื ืืขืงืขืก .ืขื ืื, ืืื ืืขืงืก.ืืืฉืก - ืึทืืฅ ืคึฟืื ืืื ืืืขืจ ืคึผืจืืืขืงื ืงืึทืืึทืืึธื:
ืืืจ ืืึทืื ืึท ืคึฟืื ืงืฆืืข ืืื ืืขื ื ืึธืืขื... ืจืืืืืง - ืืืืืขืจ, ืืื ืื ืืื ืงืก ื ืึทืืืืืึทืฆืืข ืืขื ืื ืืืจ ืึทืจืืึทื ืืขืจ ืจืขืืึทืงืืึธืจ, ืคึผืืึธืืืืจื ืืื ืื ืคืืจืืื ืื ืคืขืืืขืจ, ืืื ืืึทืฉืืืืขื ืฆื ืื ืงืืืืื ZIP ืึทืจืงืืืื ืึธืคึผืืึธืืืจื ืืื ืืืขืจ ืึทืจืงืืืื mailer.zip:
ืืื ืืึธ ืืื ืื ืคืจืืขืจ ืืขืจืืื ื ืึธืคึผืฆืืข ืฆื ืึธืคึผืืึธืืืจื ืึทืคึผื ืฉืืืกื ืืืืื ืืึธ, ืืื ืืื ืงืจืืืืืื ื ืึท ืืขืงืข ืืื ืื ืคึผืจืืืขืงื .ืขื ืื, ืืื ืืึธื ื ืื ืื ืกืืึทืืืจื ืืขื ืคึผืขืงื dotenv. ืึธืืขืจ ืืืจ ืืึธืื ืฉืืื ืืขืืื ืึทืืข ืืขื, ืึทืืื ืืื ืืืืึทืื ืขืก ื ืึธืจ ืคึฟืึทืจ ืืื ืคึฟืึธืจืืึทืฆืืข. ืึทื ืืื, ืขืก ืืื ื ืื ืืึทืจืคึฟื ืฆื ืืืคึผืืืงืึทื!
ืืืฆื ืืื ืืขืจ ืืืืืขืจืฉืืขืจ ืจืขืื ืืืื ืงื ืืื ืื ืงื ืขืคึผื ืฉืึทืคึฟื ืืืขืจืกืืข, ืืื ืืืึทืจืื ืึท ืคึผืึธืจ ืคืื ืกืขืงืื ืืขืก. ืืืขื ืึทืืฅ ืืื ืืจืืื, ืืืจ ืืืขืื ืืืืืึธืืึทืืืฉ ืืืื ืฆื ืื ืึธืคึผืืืืืื ื ืึธืคึผืฉืึทืฆืื ื. ืืึธ ืืืจ ืืืขืื ืืขืื ืื ืึธืคึผืฆืืข ืฆืืืืจ ืคึฟืื ืงืฆืืขืึทืืื ืึทื ืืืจ ืงืขื ืขื ืื ืืขืจืึทืงื ืืื ืืื ืคึฟืื ืื ืึทืจืืืก ืืืขืื.
ืืืจ ืืขื ืื ืืืื ืืื ืง ืึทื ืืงืขืื ืื ืื ืกืงืจืืคึผืฉืึทื ืจืืคื ืืื ืง? ืืจืืงื ืขืก. ื ืืืืืืง ืืืขืืขืจืขืจ ืคึฟืขื ืฆืืขืจ ืืืขื ืขืคืขื ืขื ... ืึธืืขืจ ืืืึทืจืื - ืืื ืืืงืืืขื ืึท ืืืืฆืคึผืึธืกื:
ืืืฆื ืืืจ ืงืขื ืขื ืฆืืจืืงืงืืืขื ืฆื ืื ืงืึทื ืกืึธืื ืกืขื ืืืจืื, ืืื ืืจืืงื ืืขื ืงื ืขืคึผื ืืึทืฉืืขืืืงื ืื ืืขืืจืึทืืืึธื. ืืขืจ ืกืืกืืขื ืืืขื ืงืึธื ืืจืึธืืืจื ืึทืืฅ ืืืจื ืืืื ืืฉืึทื ืึทืื, ืืื ืืื ืึท ืจืขืืืืืึทื ืขืก ืืึธื ืฆืืจืืงืงืืืขื ืึท ืคืึทืจืฉืืขืื ืืื ืืึธืก:
ืึทื ืก ืขืก, ืืืื (ืืื ืืขืจืื, ืคืื ืงืืจืก) - ืึทืืฅ ืืื ืืึทืงืข ืืืืขืจ ืคึผืฉืื ืืื ืขืืขืืึทื ื! ืขืก ืืืขื ืืืื ืืขืจ ืึทืจืืืงืืขื. ืืืื ืืืขืจ ืขืก ืื ืืื ืืื ืืขืจืขืกืืจื ืืื ืืืืขื ืขื ืขืคึผืขืก ืืื ืืขื, ืึทืืึธื ืืจื ืึทืืื ืืืจ ืืึธื ื ืื ืคืขืื.
4. ืืึธืื ืืืฉืึทื ื
ืืงืืจ: www.habr.com