ΠΠ½Π΅Ρ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Ρ.Π½Π°Ρ. Yandex ΡΡΠ½ΠΊΡΠΈΡ (ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ ΠΈΠΌΠ΅
ΠΠ· ΡΡΡΠΎ ΡΡΠΌ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ (Π½ΠΎ Π±Π΅Π· ΡΠ°Π½Π°ΡΠΈΠ·ΡΠΌ) Π½Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ, ΠΈ ΠΏΡΠΈΠ²ΡΡΠΆΠ΅Π½ΠΈΠΊ Π½Π° Ρ.Π½Π°Ρ. Π±Π΅Π· ΡΡΡΠ²ΡΡ (Π±Π΅Π·ΡΡΡΠ²ΡΡΠ½ΠΈ) ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π·Π°ΡΠΎΡΠΎ Π½Π΅ ΠΎΠ±ΠΈΡΠ°ΠΌ (ΠΈ Π½Π°ΠΈΡΡΠΈΠ½Π° Π½Π΅ Π·Π½Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π°) Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΠΌ ΡΡΡΠ²ΡΡΠΈ ΠΈ ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ»Π°ΡΠ°ΠΌ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π΅ ΡΠ° Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ. ΠΡΡΠ³ΠΎ Π½Π΅ΡΠΎ ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅. ΠΡΠΊΠΎΠΉ Π³ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° Π±Π΅Π· ΠΌΠ΅Π½, Π° Π°Π· ΠΏΠ»Π°ΡΠ°ΠΌ ΡΠ°ΠΌΠΎ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΈ. Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΎΠΊΡΠΎΠΌΠ²ΡΠΈ 2019 Π³. Yandex ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΡΠ²ΠΎΡ ΠΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Yandex - ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ ΠΏΡΡΠ²ΠΈΡΡ Π² Π ΡΡΠΊΠ°ΡΠ° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡ Π±Π΅Π· ΡΡΡΠ²ΡΡ. Π ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Ρ
ΡΠ±Π°Π²ΠΎ Π΅, ΡΠ΅ Π·Π° ΡΠΌΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΠ»ΠΈΡ ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΡΠΎΠ³Π°Π²Π° ΡΠ° Π² ΠΌΠΎΠ΅ΡΠΎ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΎ Π·ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ Π½Π΅ΠΊΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π²Π΅ΡΠ΅.
ΠΠ΅ΠΊΠ° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠΎΠ·ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ. ΠΠ°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΌΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΠ»ΠΈΡ
ΠΠ° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΎΡ Π€ΡΠ½ΠΊΡΠΈΠΈ Π½Π° Yandex ΠΏΡΠ°Π²Π΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Cloud Firestore Π²Π΅ΡΠ΅ Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ
ΠΌΠ΅ Π² ΡΡΠΎΠΊΠ°
1. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π°ΠΊΠ°ΡΠ½Ρ Π² SendGrid
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅SendGrid Π΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΡΡ ΠΈΠ·Π±ΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π΅, ΡΠ΅ ΠΈΠΌΠ°Ρ Π³ΠΎΡΠΎΠ² SDK Π·Π° Node.js. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π²ΡΡΠΊΠ° Π΄ΡΡΠ³Π° ΠΏΠΎΡΠ΅Π½ΡΠΊΠ° ΡΡΠ»ΡΠ³Π°.
ΠΠΈΠ½Π°Π²Π°ΠΌΠ΅
Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ Node.js:
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΌΠΈΡΠ»ΡΠΌΠ΅ Π·Π° Π½Π°ΡΠΈΡΠ΅ API-ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΡΡ (ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ°ΠΌΠΎ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ Π½ΡΠΌΠ° Π½ΠΈΡΠΎ ΠΎΠ±ΡΠΎ Ρ Π±ΡΠ΄Π΅ΡΠΈΡ Π½ΠΈ ΠΊΠΎΠ΄; ΡΠΎΠΊΡ-ΡΠΎ ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΡ
Π½Π΅ΠΏΡΠ΅Ρ
ΠΎΠ΄Π΅Π½ Π΄Π΅ΠΌΠΎ-api-ΠΊΠ»ΡΡ) ΠΈ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Π±ΡΡΠΎΠ½Π° Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡ:
ΠΠ»ΡΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½, Π½ΠΈΠ΅ ΡΠ΅ Π³ΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠ΅ Π³ΠΎ ΠΏΠ°Π·ΠΈΠΌ Π² Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°ΠΉΠ½Π°. Π ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΅ΠΊΡΠ°Π½ Ρ Π±ΡΡΠΎΠ½ ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ Π΅ Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΡΠ°ΠΊΠ²Π°ΠΌΠ΅ Π²ΡΡΡ
Ρ Π½Π΅Π³ΠΎ, Π° Π½Π΅ΠΊΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°:
2. ΠΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄
ΠΠΎ ΡΠ°ΠΌΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, Π΅ ΡΠΌΠ΅ΡΠ½ΠΎ ΠΌΠ°Π»ΡΠΊ - 22 ΡΠ΅Π΄Π°!
Π ΡΠ΅Π΄ΠΈΡΠ° #8 ΠΠΎΡΡ ΠΈΠΌΠ΅ΠΉΠ» Π΅ ΡΠ²ΡΡΠ΄ΠΎ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ (ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΏΠ»Π°Ρ
ΠΎ ΡΠΊΡΠΈΡ) - ΠΌΠΎΠ»Ρ, ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡ. Π ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΠΏΠΎΡΠ°) ΠΎΡ ΠΎΠ±Π΅ΠΊΡ ΡΡΠ±ΠΈΡΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΡΡ ΠΠ£Π‘ΠΠ ΠΊΡΠΌ Π½Π°ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΎΠ±Π΅ΠΊΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Ρ ΠΏΠΎΠ»Π΅ (ΠΈΠΌΠΎΡ) Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΠΏΠΎΡΠ°, ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ²Π° ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
const { user } = event;
const email = user.email;
Π Π°ΠΊΠΎ ΠΈΠΌΠ΅ΠΉΠ» Π°Π΄ΡΠ΅ΡΡΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° GET, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: 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/ΠΏΠΎΡΠ°. ΠΠ°ΠΉΠ»ΠΎΠ½ΠΎΠ² ΠΏΠ»ΠΈΠΊ ΠΈΠΌΠ΅ΠΉΠ»-Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΈΠΌΠ΅ΠΉΠ» Π°Π΄ΡΠ΅ΡΠ° Π·Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ (ΠΊΠ°ΠΊ Π½Π΅ ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠΈΡ Π²Π΅Π΄Π½Π°Π³Π°?), Π½ΠΎ Π°ΠΊΠΎ ΡΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π² Π½Π΅Π³ΠΎ (Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ ΠΎΡΠ΄Π°Π²Π½Π° Π±Π΅Π· Π½Π°Ρ), Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ (ΠΈ, Π½Π° ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π² ΠΊΠΎΠ΄Π°). ΠΠ°ΠΉΠ»ΠΎΠ½ΠΎΠ² ΠΏΠ»ΠΈΠΊ dotenv ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΠΎΡ ΡΠ°ΠΉΠ» .env ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΎ Π² Π€ΡΠ½ΠΊΡΠΈΠΈ Π½Π° Yandex ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΊΠ°ΠΊ? - Π©Π΅ Π³ΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ dotenv ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π½Π΅ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ°ΠΉΠ»Π° .env - Π½Π΅ ΡΡΠ·Π΄Π°Π²Π°ΠΉΡΠ΅, Π° Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ΄ΡΡ Π΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° index.js Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ. ΠΠΎ ΡΡΠΊ ΡΠΌΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ index.js ΠΈ .env:
touch index.js
touch .env
ΠΡΠ² ΡΠ°ΠΉΠ»Π° index.js Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ 22 ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Π΅ΠΊΡΠ°Π½Π½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ (ΡΠ°ΠΌΠΎ Π² ΡΠ΅Π΄Π° #8 ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ²ΠΎΡ ΠΈΠΌΠ΅ΠΉΠ») ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° .env - (Π±Π΅Π· ΠΊΠ°Π²ΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΏΠΈΠ½Π°ΡΠ΅Π»Π½ΠΈ Π·Π½Π°ΡΠΈ) ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ Π΄Π²ΠΎΠΉΠΊΠ°ΡΠ° - ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΡΡ/ΡΡΠΎΠΉΠ½ΠΎΡΡ 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 ΡΠΌΡΠ½Π° Π½Π° ΠΈΠΌΠ΅ΠΉΠ»; ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .env, Π° Π² Π½Π΅Π³ΠΎ ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ/ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ»ΡΡΠ° API, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠΎΡΠ½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
3. Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅ΡΠ΅
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° Yandex.Cloud ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΌ Π€ΡΠ½ΠΊΡΠΈΠΈ Π½Π° Yandex ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΡΠ°ΡΠΈΡΡΠ° ΠΌΠΈ
Π‘ΡΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΈΠΏ-Π°ΡΡ ΠΈΠ² (Π΄Π° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ Π½Π°ΠΏΡ. mailer.zip), Π² ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ_Π²ΡΠ·Π΅Π» ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ .env, index.js - Π²ΡΠΈΡΠΊΠΎ ΠΎΡ Π½Π°ΡΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈ:
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅ΡΠΎ... ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ - ΠΏΠΎΠ΄Π°ΡΠ΅Π», Π² Π»ΡΠ²ΠΎΡΠΎ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎ ΠΌΠ΅Π½Ρ Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π Π΅Π΄Π°ΠΊΡΠΎΡ, ΠΏΠΎΠΏΡΠ»Π½Π΅ΡΠ΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ° ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΠ°Π·Π΄Π΅Π»Π° ZIP Π°ΡΡ
ΠΈΠ² ΠΈΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ Π½Π°ΡΠΈΡ Π°ΡΡ
ΠΈΠ² mailer.zip:
Π ΡΡΠΊ Π΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ API ΠΊΠ»ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠΊ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ°ΠΉΠ» Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° .env, ΠΈ Π½Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° dotenv. ΠΠΎ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π³ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π’ΠΎΠ΅ΡΡ Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ Π΄ΡΠ±Π»ΠΈΡΠ°Π½Π΅!
Π‘Π΅Π³Π° Π² Π³ΠΎΡΠ½ΠΈΡ Π΄Π΅ΡΠ΅Π½ ΡΠ³ΡΠ» ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ
Ρ Π±ΡΡΠΎΠ½Π° Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΡΠΈ ΠΈΠ·ΡΠ°ΠΊΠ°ΠΉΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΎΡΠΈΠ΄Π΅ΠΌ Π² ΡΠ΅ΠΊΡΠΈΡΡΠ° ΠΡΠ΅Π³Π»Π΅Π΄. Π’Π°ΠΌ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ ΠΎΠΏΡΠΈΡΡΠ° ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°ΡΠ΅ Ρ Π½Π΅Π³ΠΎ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈΡ ΡΠ²ΡΡ.
ΠΠΈΠΆΠ΄Π°ΡΠ΅ ΡΠΈΠ½ΡΡΠ° Π²ΡΡΠ·ΠΊΠ° ΡΡΠ΅ΡΡ Π½Π°Π΄ΠΏΠΈΡΠ° ΠΠΈΠ½ΠΊ Π·Π° ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅? ΠΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ
Ρ Π½Π΅Π³ΠΎ. Π©Π΅ ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ ΠΏΡΠ°Π·Π΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ°... ΠΠΎ ΠΈΠ·ΡΠ°ΠΊΠ°ΠΉΡΠ΅ - ΠΏΠΎΠ»ΡΡΠΈΡ
ΠΈΠΌΠ΅ΠΉΠ»:
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° SendGrid, ΠΈ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Π±ΡΡΠΎΠ½Π° ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½Π΅ Π΅ΠΊΡΠ°Π½ ΠΊΠ°ΡΠΎ ΡΠΎΠ·ΠΈ:
Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ, ΠΌΠΎΠΌΡΠ΅ΡΠ° (ΠΈ ΠΌΠΎΠΌΠΈΡΠ΅ΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅) - Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈ Π΅Π»Π΅Π³Π°Π½ΡΠ½ΠΎ! Π©Π΅ ΠΈΠΌΠ° ΠΎΡΠ΅ ΡΡΠ°ΡΠΈΠΈ. ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΠΈΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ΠΊΠ° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°, Π·Π° Π΄Π° Π½Π΅ ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅.
4. ΠΠ°ΡΠ΅Π½ΠΈΡ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com