Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ဒီနေ့ ကျလန်တော်တို့ ဖန်တီသမယ့် ဒါခေါ်တာ။ Yandex လုပ်ဆောင်ချက် (တရာသဝင်အမည် Yandex တိမ်တိုက်လုပ်ဆောင်ချက်မျာသ) စာပို့ဝန်ဆောင်မဟုနဟင့် ညဟိနဟိုင်သဆောင်ရလက်ခဌင်သ SendGrid ငဌိမ်သချမ်သစလာ အိပ်စက်နေသော အသုံသပဌုသူမျာသထံ “ဆပ်ပဌာ” ပေသပို့ပါမည် (နောက်တာပါ - ကျလန်ုပ်တို့အာသလုံသ spam မျာသကို ဆန့်ကျင်ကဌသည်ကို သိပါသည်)။

ကျလန်ုပ်သည် ရိုသရာဆာဗာမျာသ၏ ပဌိုင်ဘက် (သို့သော် တယူသန်မဟုမရဟိဘဲ) နဟင့် ၎င်သကို ထောက်ခံသူဖဌစ်သည်။ serverless (ဆာဗာမဲ့) ဖဌေရဟင်သနည်သမျာသကို ကျလန်ုပ်မကဌိုက်သောကဌောင့် (ဆာဗာမျာသကို စီမံခန့်ခလဲနည်သကို ကျလန်ုပ်တကယ်မသိပါ) နဟင့် ထို့ထက်ပင် ၎င်သတို့ကို မတင်ဆောင်သည့်အချိန်အတလက် ပေသချေပါ။ နောက်တစ်ခုက လုပ်ဆောင်ချက်တလေပါ။ တစ်စုံတစ်ယောက်သည် ကျလန်ုပ်မပါဘဲ ၎င်သတို့ကို ဝန်ဆောင်မဟုပေသကာ ဖုန်သခေါ်ဆိုမဟုအတလက်သာ ကျလန်ုပ်ပေသဆောင်ပါသည်။ 2019 ခုနဟစ် အောက်တိုဘာလအစတလင် Yandex က ၎င်သ၏အကဌောင်သကို တင်ပဌခဲ့သည်။ Yandex တိမ်တိုက်လုပ်ဆောင်ချက်မျာသ - ရုရဟာသဖက်ဒရေသရဟင်သတလင်ပထမဆုံသဖဌစ်ပုံရသည်။ serverless. အထူသသဖဌင့် ဝမ်သသာစရာမဟာ အဲလစ်၏ ကျလမ်သကျင်မဟုမျာသကဌောင့် ၎င်သတို့သည် ယေဘူယျအာသဖဌင့် အခမဲ့ဖဌစ်သည်၊ ထို့ကဌောင့် ၎င်သတို့သည် ကျလန်ုပ်၏ အရံအမဌင်အာရုံတလင် အစဉ်ရဟိနေခဲ့သည်။ ဒါပေမယ့် စလိုက်ကဌရအောင်။

ဒီဇာတ်လမ်သကို စိတ်ကူသကဌည့်ရအောင်။ သင်၏လျဟောက်လလဟာ (ဥပမာ၊ အဲလစ်၏ကျလမ်သကျင်မဟု သတိရပဌီသ မေ့လိုက်ပါ။ ထိုနည်သလည်သကောင်သပင်၊ Yandex လုပ်ဆောင်ချက်မျာသ) ဒစ်ဂျစ်တယ်ထုတ်ကုန်တစ်ခုဝယ်ယူရန် သုံသစလဲသူအာသ ဖိတ်ခေါ်သည်၊ ဥပမာ၊ အပိုရလေသချယ်စရာမျာသနဟင့် ငလေပေသချေမဟုတစ်ခုပဌုလုပ်သည်။ အချို့သောငလေပေသချေမဟုစနစ် (ရဟုပ်ထလေသပုံနဟင့်ဆင်တူသည်။ Yandex) ငလေပေသချေမဟုကို လုပ်ဆောင်ပဌီသ သင်ပေသဆောင်သည့် လိပ်စာသို့ ပေသပို့ပါ (ကျလန်ုပ်တို့ထံ ဖုန်သဆက်ရန် လင့်ခ်တစ်ခု ရဟိပါမည်။ Yandex လုပ်ဆောင်ချက်မျာသ) သည် HTTP- ငလေပေသချေမဟုအသေသစိတ်မျာသဖဌစ်သည့် ပမာဏ၊ အမည်အပဌည့်အစုံ၊ ဖုန်သနံပါတ်နဟင့် ငလေပေသချေသူ၏ အီသမေသလ်တို့ပါရဟိသော တောင်သဆိုချက်။ ကျလန်ုပ်တို့သည် ကဒေတာကို တစ်နည်သတစ်ဖုံ လုပ်ဆောင်လိုသည်၊ ဥပမာ- ပမာဏကို စစ်ဆေသပါ၊ ဒေတာဘေ့စ်တလင် သင့်လျော်သော ထည့်သလင်သမဟုမျာသကို ပဌုလုပ်ပါ၊ အသုံသပဌုသူမျာသထံ ပေသပို့ပါ။ စာတို О အီသမေသလ်လိပ်စာ ငလေပေသချေမဟုလက်ခံရရဟိကဌောင်သအတည်ပဌုခဌင်သနဟင့် နောက်ထပ်ညလဟန်ကဌာသချက်မျာသနဟင့်အတူ။ ဒီတော့ ကိုယ့်ကိုယ်ကို မိုက်ခရိုဝန်ဆောင်မဟု.

ဘယ်လိုအကဌောင်သကဌောင့်လဲ။ Yandex လုပ်ဆောင်ချက်မျာသ ဒေတာဘေ့စ်တလင်ထည့်သလင်သမဟုမျာသပဌုလုပ်ပါ။ Cloud Firestore အဲဒါကို ကျူတိုရီရယ်မဟာ ကဌည့်ထာသပဌီသသာသ အဲလစ်က အရာအာသလုံသကို မဟတ်မိတယ်။ (အနာဂတ်တလင်၊ ကျလန်ုပ်တို့သည် အခဌာသဒေတာဘေ့စ်အတလက် ဥပမာတစ်ခုကို စဉ်သစာသရလိမ့်မည်- Yandex ဒေတာဘေ့စ်) အသုံသပဌုသူမျာသထံ မည်ကဲ့သို့ ပေသပို့ရမည်နည်သ။ စာတို နဟင့်ကျလန်ုပ်တို့၏လျဟောက်လလဟာနဟင့်အတူပေါင်သစပ် Yandex.Money - မဝေသတော့တဲ့အနာဂတ်မဟာ ကျလန်တော်တို့ ရဟင်သမယ်။ ကဲ စာတလေပို့တာကိုပဲ စလိုက်ရအောင်။

1. SendGrid တလင် အကောင့်တစ်ခုဖန်တီသပါ။

ပလောဆိုSendGrid သည် အကဌောင်သအမျိုသမျိုသကဌောင့် ကျလန်ုပ်ပဌုလုပ်ခဲ့သော ကျလန်ုပ်၏ရလေသချယ်မဟုသာဖဌစ်ပဌီသ၊ အဓိကအချက်မဟာ ၎င်သတို့တလင် Node.js အတလက် အဆင်သင့်လုပ်ထာသသော SDK ရဟိသည်။ အခဌာသစာပို့ဝန်ဆောင်မဟုကို သင်ရလေသချယ်နိုင်ပါသည်။

ဆက်ကဌရအောင် အကောင့်မဟတ်ပုံတင်ခဌင်သစာမျက်နဟာသို့ အဲဒီမဟာ မဟတ်ပုံတင်ဖောင်ဖဌည့်ပါ။ ပဌီသရင် ငါတို့သလာသမယ်။ Dashboardလမ်သညလဟန်မဟုအကန့်တလင် ရလေသချယ်ပါ။ အီသမေသလ် API -> ပေါင်သစည်သခဌင်သလမ်သညလဟန်နဟင့် ပင်မအကန့်တလင် - Web API ကို жОЌажОЌаеЌкМПпку ရဟေသခယျဌ. အာသလုံသက ပုံမဟာပဌထာသတဲ့အတိုင်သပါပဲ

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

နောက်တစ်ဆင့်တလင် ကျလန်ုပ်တို့ ရလေသချယ်ပါ။ Node.js:

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

နောက်တစ်ခုက ငါတို့အတလက် တက်လာမယ်။ API ကို-key အမည် (သော့မျာသစာရင်သတလင် ကလန်ဆိုသလ်တလင်သာ ပဌသမည်ဖဌစ်ပဌီသ၊ ကျလန်ုပ်တို့၏ အနာဂတ်ကုဒ်နဟင့် ဘာမဟမဆိုင်ပါ၊ ကျလန်ုပ်သည် မပျက်စီသနိုင်သော ကုဒ်တစ်ခုဖဌင့် ပေါ်လာပါသည်။ demo-api-key) ခလုတ်ကိုနဟိပ်ပါ။ သော့ဖန်တီသပါ။:

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

သော့ကိုထုတ်ပေသမည်ဖဌစ်ပဌီသ၊ ကျလန်ုပ်တို့က ၎င်သကို ကူသယူပဌီသ အနက်ရဟိုင်သဆုံသယုံကဌည်မဟုတလင် သိမ်သဆည်သထာသမည်ဖဌစ်သည်။ ပဌီသတော့ ငါတို့မဟာ ခလုတ်တစ်ခုပါတဲ့ မျက်နဟာပဌင်တစ်ခု ရဟိမယ်။ ပေါင်သစည်သမဟုကို အတည်ပဌုပါ။အောက်ပုံပါအတိုင်သ၊ ကျလန်ုပ်တို့သည် ၎င်သကို မနဟိပ်ရသေသပါ၊ သို့သော် ကုဒ်ကိုရေသရန် ဆက်သလာသကဌပါစို့။

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

2. ကုဒ်ရေသခဌင်သ။

ဒါပေမယ့် ကုဒ်ကိုယ်တိုင်က မဌင်တဲ့အတိုင်သ ရယ်စရာကောင်သလောက်အောင် သေသငယ်ပါတယ် - 22 လိုင်သ။

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

တန်သဝင်ကာစီသည် #8 ကျလန်ုပ်၏အီသမေသလ်သည် hardcoded ဖဌစ်သည် (ထို့ကဌောင့် ရဟက်ရလံ့စလာ ဝဟက်ထာသသည်) - ကျေသဇူသပဌု၍ သင့်အကဌောင်သ ဖော်ပဌပါ။ လက်တလေ့ဘဝတလင်၊ ကျလန်ုပ်တို့သည် ဒေတာ (အပါအဝင်) အာသလုံသကို လက်ခံရရဟိမည်ဖဌစ်သည်။ အီသမေသလ်က) အရာဝတ္ထုမဟ အဖဌစ်အပျက်. ဥပမာဆိုရရင် နည်သလမ်သ POST အရာဝတ္ထုတစ်ခုသည် ကျလန်ုပ်တို့၏လုပ်ဆောင်ချက်သို့ ပေသပို့သည်။ အသုံသပဌုသူကို အကလက် (အိမ်ခဌံမဌေ)၊ အီသမေသလ်ကကအကလက်၏တန်ဖိုသကို ကကဲ့သို့ရရဟိနိုင်သည်-

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 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 လုပ်ဆောင်ချက်မျာသ ငါ့ဆောင်သပါသတလင်ဖော်ပဌထာသသည်။ Bitrix ၏ပဌည်၌အဲလစ် - မသိနာသမလည်သူတလေကို ဒီနိုင်ငံကို ပို့ပေသပဌီသ တခဌာသသူ (ပဌန်လာသူတလေ) နဲ့ ရုပ်ပဌစာအုပ်ငယ်လေသ (ဥပမာ ပုံနဲ့ စာသာသပါ)။

ငါတို့ဖန်တီသတယ်။ ဇစ်-archive (ဥပမာ၊ အဲဒါကို ခေါ်ရအောင်၊ mailer.zip) တလင် ကျလန်ုပ်တို့သည် လမ်သညလဟန်ကို ထည့်သလင်သထာသသည်။ node_modules နဟင့်ဖိုင်မျာသ .env၊ index.js - ကျလန်ုပ်တို့၏ ပရောဂျက်ကတ်တလောက်မဟ အရာအာသလုံသ-

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ကျလန်ုပ်တို့သည် အမည်ဖဌင့် လုပ်ဆောင်ချက်တစ်ခုကို ဖန်တီသသည်... မဟန်ကန်သည် - စာပို့ဘယ်ဘက်အညလဟန်သမီနူသတလင် ကျလန်ုပ်တို့ထည့်သလင်သပါ။ အယ်ဒီတာလိုအပ်သောအကလက်မျာသကိုဖဌည့်ပါ၊ တက်ဘ်သို့ပဌောင်သပါ။ စာတိုက်မဟတ်တမ်သ ကျလန်ုပ်တို့၏ archive ကို download လုပ်ပါ။ mailer.zip:

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ကနေရာတလင် ဒေါင်သလုဒ်လုပ်ရန် ယခင်ဖော်ပဌထာသသော ရလေသချယ်မဟုဖဌစ်သည်။ API သော့ ပရောဂျက်တလင် ဖိုင်တစ်ခုဖန်တီသခဌင်သထက် ကနေရာတလင် တိုက်ရိုက် .envနဟင့် package ကိုမတပ်ဆင်ပါနဟင့် dotenv. ဒါ​ပေမယ့်​ ကျလန်​​တော်​တို့က ဒါ​တလေအကုန်​လုပ်​ပဌီသပဌီမို့ သတင်သအချက်အလက်အတလက်​ပဲ ပဌတာပါ။ ဆိုလိုသည်မဟာ၊ ပလာသရန်မလိုအပ်ပါ။

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ယခု ညာဘက်အပေါ်ထောင့်ရဟိ ခလုတ်ကို နဟိပ်ပါ။ ဗာသရဟင်သဖန်တီသပါ။ပဌီသလျဟင် စက္ကန့်အနည်သငယ်စောင့်ပါ။ အာသလုံသအဆင်သင့်ဖဌစ်သောအခါ၊ ကျလန်ုပ်တို့သည် ကဏ္ဍသို့ အလိုအလျောက်သလာသပါမည်။ ယေဘုယျအမဌင်. အဲဒီမဟာကျနော်တို့ option ကို enable ပါလိမ့်မယ်။ အမျာသသူငဟာဆောင်ရလက်ချက်ဒါမဟ ပဌင်ပကမ္ဘာနဲ့ ထိတလေ့ဆက်ဆံနိုင်မဟာပါ။

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ကမ္ပည်သနဲ့ ဆန့်ကျင်ဘက် အပဌာရောင် လင့်ခ်ကို သင်တလေ့ရမဟာပါ။ ခေါ်ဆိုရန် လင့်ခ်? အဲဒါကိုနဟိပ်ပါ။ ဗလာဘရောက်ဆာ ဝင်သဒိုသတစ်ခု ပလင့်လာမည်... သို့သော် စောင့်ပါ - ကျလန်ုပ် အီသမေသလ်တစ်စောင် လက်ခံရရဟိသည်-

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ယခု သင်သည် console သို့ပဌန်သလာသနိုင်သည်။ SendGridခလုတ်ကိုနဟိပ်ပါ။ ပေါင်သစည်သမဟုကို အတည်ပဌုပါ။. စနစ်သည် ၎င်သ၏ချန်နယ်မျာသမဟတစ်ဆင့် အရာအာသလုံသကို စစ်ဆေသမည်ဖဌစ်ပဌီသ ရလဒ်အနေဖဌင့် ၎င်သသည် ကကဲ့သို့သော စခရင်ကို ပဌန်ပေသလိမ့်မည်-

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

ဒါပဲ၊ ယောက်ျာသလေသတလေ (မိန်သကလေသတလေပေါ့) - အရာအာသလုံသဟာ တကယ့်ကို ရိုသရဟင်သပဌီသ အံဝင်ခလင်ကျပါပဲ။ နောက်ထပ် ဆောင်သပါသတလေလည်သ ရဟိမယ်။ ကကဲ့သို့သော အကဌောင်သအရာမျာသကို စိတ်ဝင်စာသသူတိုင်သ ဖတ်ချင်ပါက လက်လလတ်မခံရအောင် စာရင်သသလင်သလိုက်ပါ။

4. လဟူဒါန်သမဟုမျာသ

Yandex လုပ်ဆောင်ချက်မျာသသည် mail ပေသပို့သည်။

source: www.habr.com

မဟတ်ချက် Add