Ang mga function ng Yandex ay nagpapadala ng mail

Ang mga function ng Yandex ay nagpapadala ng mail

Ngayon ay lilikha tayo ng tinatawag na. Pag-andar ng Yandex (opisyal na pangalan Yandex Cloud Functions), na nakipagsabwatan sa serbisyo sa pagkoreo SendGrid ay magpapadala ng "sabon" sa mapayapang natutulog na mga gumagamit (biro lang - alam kong lahat tayo ay laban sa spam).

Isa rin akong kalaban (ngunit walang panatismo) ng mga tradisyunal na server, at isang tagasuporta ng tinatawag na. walang server (walang server) na mga solusyon, dahil hindi ko gusto (at hindi ko talaga alam kung paano) mangasiwa ng mga server, at higit pa, magbayad para sa oras kapag hindi sila na-load. Ang isa pang bagay ay mga pag-andar. May nagseserbisyo sa kanila nang wala ako, at nagbabayad lang ako para sa mga tawag. Sa simula ng Oktubre 2019, ipinakita ng Yandex ang nito Yandex Cloud Functions - tila ang una sa Russian Federation walang server. At ang mas maganda ay para sa mga kasanayan ni Alice sila ay karaniwang libre, kaya sila ay nasa aking peripheral vision mula noon. Ngunit magsimula na tayo.

Isipin natin ang senaryo na ito. Ang iyong aplikasyon (halimbawa, ang kakayahan ni Alice Tandaan at Kalimutan na, sa pamamagitan ng paraan, ay gumagana din sa Mga function ng Yandex) iniimbitahan ang user na bumili ng digital na produkto, halimbawa, mga karagdagang opsyon, at magbabayad ang user. Ilang uri ng sistema ng pagbabayad (nakalilitong katulad ng Yandex.Money) pinoproseso ang pagbabayad at ipinapadala ito sa address na iyong ibinigay (at magkakaroon kami ng link para tawagan Mga function ng Yandex) HTTP-isang kahilingan na naglalaman ng mga detalye ng pagbabayad, tulad ng halaga, buong pangalan, numero ng telepono at email ng nagbabayad. Gusto naming iproseso ang data na ito sa ilang paraan, halimbawa: suriin ang halaga, gumawa ng naaangkop na mga entry sa database, ipadala sa mga user SMS ΠΈ Email na may kumpirmasyon ng pagtanggap ng pagbabayad at karagdagang mga tagubilin. Kaya ang iyong sarili microservice.

Tungkol sa kung paano mula sa Mga function ng Yandex gumawa ng mga entry sa database Cloud Firestore tiningnan na namin ito sa tutorial Naaalala ni Alice ang lahat (at sa hinaharap, sa palagay ko, isasaalang-alang namin ang isang halimbawa para sa isa pang database - Yandex Database). Tungkol sa kung paano ipadala sa mga user SMS at isama ang aming aplikasyon sa Yandex.Money β€” Aayusin natin ito sa malapit na hinaharap. Ngayon ay haharapin na lang natin ang pagpapadala ng mga liham.

1. Gumawa ng account sa SendGrid

NotaAng SendGrid ay pinili ko lang, na ginawa ko para sa ilang kadahilanan, ang pangunahing isa ay mayroon silang isang handa na SDK para sa Node.js. Maaari kang pumili ng anumang iba pang serbisyo sa pagkoreo.

Mag-move on na tayo sa pahina ng pagpaparehistro ng account at punan ang registration form doon. Pagkatapos ay pumunta kami sa Tapalodo, sa navigation panel piliin ang Email API -> Gabay sa Pagsasama, at sa pangunahing panel - WebAPI at pindutin ang pindutan Piliin. Ang lahat ay tulad ng sa larawan:

Ang mga function ng Yandex ay nagpapadala ng mail

Sa susunod na hakbang pipiliin namin node.js:

Ang mga function ng Yandex ay nagpapadala ng mail

Susunod na makabuo kami para sa aming API-key name (ipapakita lamang sa console sa listahan ng mga key, at walang kinalaman sa aming code sa hinaharap; Nakaisip ako ng isang hindi masisira demo-api-key) at pindutin ang pindutan Lumikha ng Key:

Ang mga function ng Yandex ay nagpapadala ng mail

Ang susi ay mabubuo, kokopyahin namin ito at itago ito sa pinakamalalim na kumpiyansa. At magkakaroon kami ng isang screen na may isang pindutan I-verify ang Pagsasama, tulad ng nasa larawan sa ibaba, ngunit hindi pa namin ito iki-click, ngunit magpatuloy tayo sa pagsulat ng code:

Ang mga function ng Yandex ay nagpapadala ng mail

2. Pagsulat ng code

Ngunit ang code mismo, tulad ng nakikita mo, ay katawa-tawa na maliit - 22 linya!

Ang mga function ng Yandex ay nagpapadala ng mail

Nasa linya #8 Ang aking email ay hardcoded (at samakatuwid ay nahihiyang nakatago) - mangyaring ipahiwatig ang sa iyo. Sa totoong buhay, matatanggap namin ang lahat ng data (kabilang ang email) mula sa bagay pangyayari. Halimbawa, kung ang pamamaraan POST isang bagay ay ipinadala sa aming function gumagamit may field (property) email, ang halaga ng field na ito ay maaaring makuha tulad nito:

const { user } = event;
const email = user.email;

At kung ang email address ay naipasa sa function gamit ang pamamaraan GET, halimbawa: https://functions.yandexcloud.net/123abc?[email protected]
halaga ng parameter email maaari mong makuha ito tulad nito:

const email = event.queryStringParameters.email;

Upang tingnan kung ano ang eksaktong nilalaman ng isang bagay pangyayari, maaari kang lumikha ng pinakasimpleng Pag-andar ng Yandex at i-twist ito ng mga query:

module.exports.handler = async function (event) {
  return {
   'statusCode': 200, 
   'body': JSON.stringify(event)
  };
};

Ito ay tinalakay nang mas detalyado (ngunit hindi gaanong malinaw) sa opisyal na dokumentasyon dito.

Kaya, lumikha ng isang direktoryo ng proyekto (halimbawa, mga mailers), pumunta dito, simulan ang proyekto, i-install ang mga dependency:

mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv

Dito lang kailangan ang package @sendgrid/mail. Plastik na bag email-validator sinusuri ang email address para sa validity (paano ko hindi nahulaan kaagad?), ngunit kung sigurado tayo dito (matagal na itong nasuri nang wala tayo), hindi natin kailangang i-install ito (at, ng siyempre, hindi namin kailangang suriin ito sa code). Plastik na bag dotenv idinisenyo upang basahin ang mga talaan mula sa isang file .env bilang mga variable ng runtime. Ngunit sa Mga function ng Yandex Posibleng ilagay ang mga variable na ito nang direkta sa runtime na kapaligiran. Paano? - Ipapakita ko ito sa ibaba. Samakatuwid ang pakete dotenv hindi mo rin mai-install ito, at ang file .env - huwag lumikha, at sa parehong oras ang code ay nasa file index.js huwag magbago. Ngunit dito namin na-install ang package na ito, kaya gumawa kami ng mga file index.js ΠΈ .env:

touch index.js
touch .env

Nasa file index.js sumulat ng 22 linya ng code na ipinapakita sa screenshot sa itaas (sa linya lamang #8 baguhin ang iyong email), at sa file .env - (nang walang anumang mga panipi o bantas) tukuyin ang pares - pangalan/halaga ng key APIna natanggap namin kamakailan sa console SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key

At kung gusto mo ng mas kaunting trabaho, i-clone ang repositoryo at i-install ang mga pakete:

git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i

Nasa file index.js, nasa linya #8 magpalit ng e-mail; lumikha ng isang file sa root directory .env, at sa loob nito ay nagpapahiwatig ng pangalan/halaga ng susi API, gaya ng ipinapakita sa itaas.

3. I-deploy

Higit pa o hindi gaanong malinaw at detalyado tungkol sa Yandex.Cloud at kung paano ilagay ito doon Mga function ng Yandex inilarawan sa aking artikulo Alice sa Land of Bitrix - Nagpapadala ako ng mga ignorante sa bansang ito, at para sa iba pa (at sa mga bumalik) - pagkatapos ay isang maliit na comic book (ibig sabihin, isang serye ng mga larawan at teksto).

Lumikha sigla-archive (tawagin natin ito, halimbawa, mailer.zip), kung saan kasama namin ang direktoryo node_modules at mga file .env, index.js - lahat mula sa aming katalogo ng proyekto:

Ang mga function ng Yandex ay nagpapadala ng mail

Lumilikha kami ng isang function na may pangalan... tama - mga mailers, sa kaliwang menu ng nabigasyon kami ay pumapasok Ang editor, punan ang mga kinakailangang field, at lumipat sa tab ZIP archive i-download ang aming archive mailer.zip:

Ang mga function ng Yandex ay nagpapadala ng mail

At narito ang naunang nabanggit na opsyon upang i-download API key direkta dito, sa halip na lumikha ng isang file sa proyekto .env, at huwag i-install ang package dotenv. Ngunit nagawa na natin ang lahat ng ito, kaya ipinapakita ko ito para lamang sa impormasyon. Ibig sabihin, hindi na kailangang duplicate!

Ang mga function ng Yandex ay nagpapadala ng mail

Ngayon sa kanang sulok sa itaas i-click ang pindutan Lumikha ng bersyon, at maghintay ng ilang segundo. Kapag handa na ang lahat, awtomatiko kaming pupunta sa seksyon Repasuhin. Doon namin paganahin ang opsyon Pampublikong tungkulinupang maaari kang makipag-ugnayan dito mula sa labas ng mundo.

Ang mga function ng Yandex ay nagpapadala ng mail

Nakikita mo ang asul na link sa tapat ng inskripsiyon Link ng tawag? I-click ito. Magbubukas ang isang walang laman na window ng browser... Ngunit teka - Nakatanggap ako ng email:

Ang mga function ng Yandex ay nagpapadala ng mail

Ngayon ay maaari kang bumalik sa console SendGrid, at pindutin ang button I-verify ang Pagsasama. Susuriin ng system ang lahat sa pamamagitan ng mga channel nito, at bilang resulta, dapat itong magbalik ng screen na tulad nito:

Ang mga function ng Yandex ay nagpapadala ng mail

Iyon lang, mga lalaki (at mga babae, siyempre) - ang lahat ay talagang napaka-simple at eleganteng! Magkakaroon ng higit pang mga artikulo. Kung may interesadong magbasa ng ganito, mag-subscribe para hindi ka makaligtaan.

4. Mga donasyon

Ang mga function ng Yandex ay nagpapadala ng mail

Pinagmulan: www.habr.com

Magdagdag ng komento