Fungsi Yandex mengirim email

Fungsi Yandex mengirim email

Hari ini kita akan membuat apa yang disebut. fungsi Yandex (nama resmi Fungsi Cloud Yandex), yang berkolusi dengan layanan pengiriman surat SendGrid akan mengirimkan "sabun" ke pengguna yang tidur nyenyak (bercanda - saya tahu kita semua menentang spam).

Saya juga penentang (tetapi tanpa fanatisme) server tradisional, dan pendukung apa yang disebut. tanpa server solusi (tanpa server), karena saya tidak suka (dan saya tidak begitu tahu cara) mengelola server, dan terlebih lagi, membayar waktu ketika server tidak dimuat. Hal lainnya adalah fungsi. Seseorang melayaninya tanpa saya, dan saya hanya membayar untuk panggilan. Pada awal Oktober 2019, Yandex mempresentasikannya Fungsi Cloud Yandex - tampaknya menjadi yang pertama di Federasi Rusia tanpa server. Dan yang paling bagus adalah untuk keterampilan Alice, keterampilan tersebut umumnya gratis, jadi keterampilan tersebut selalu ada dalam pandangan periferal saya sejak saat itu. Tapi mari kita mulai.

Mari kita bayangkan skenario ini. Aplikasi Anda (misalnya, keahlian Alice Ingat dan Lupakan yang, omong-omong, juga berfungsi Fungsi Yandex) mengundang pengguna untuk membeli produk digital, misalnya opsi tambahan, dan pengguna melakukan pembayaran. Semacam sistem pembayaran (yang membingungkan mirip dengan Yandex) memproses pembayaran dan mengirimkannya ke alamat yang Anda berikan (dan kami akan memiliki tautan untuk dihubungi Fungsi Yandex) HTTP-permintaan yang berisi rincian pembayaran, seperti jumlah, nama lengkap, nomor telepon dan email pembayar. Kami ingin memproses data ini dengan beberapa cara, misalnya: memeriksa jumlahnya, membuat entri yang sesuai dalam database, mengirimkan ke pengguna SMS ΠΈ Email dengan konfirmasi penerimaan pembayaran dan instruksi lebih lanjut. Jadi dirimu sendiri layanan mikro.

Tentang bagaimana dari Fungsi Yandex membuat entri dalam database Toko Api Awan kita sudah melihatnya di tutorial Alice mengingat semuanya (dan di masa depan, menurut saya, kami akan mempertimbangkan contoh untuk database lain - Basis Data Yandex). Tentang cara mengirim ke pengguna SMS dan mengintegrasikan aplikasi kita dengan Yandex.Uang β€” kami akan menyelesaikannya dalam waktu dekat. Sekarang mari kita berurusan dengan pengiriman surat.

1. Buat akun di SendGrid

CatatanSendGrid hanyalah pilihan saya, yang saya buat karena beberapa alasan, yang utama adalah mereka memiliki SDK siap pakai untuk Node.js. Anda dapat memilih layanan pengiriman surat lainnya.

berjalan ke halaman pendaftaran akun dan mengisi formulir pendaftaran di sana. Lalu kita pergi ke Menu Utama, di panel navigasi pilih API Email -> Panduan Integrasi, dan di panel utama - API web Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΎΠΏΠΊΡƒ Pilih. Semuanya seperti pada gambar:

Fungsi Yandex mengirim email

Pada langkah selanjutnya kita pilih Node.js:

Fungsi Yandex mengirim email

Selanjutnya kita buat untuk kita API-nama kunci (hanya akan ditampilkan di konsol dalam daftar kunci, dan tidak ada hubungannya dengan kode masa depan kita; Saya baru saja membuat yang tidak dapat rusak demo-api-key) dan tekan tombol Buat Kunci:

Fungsi Yandex mengirim email

Kuncinya akan dibuat, kami akan menyalinnya dan menyimpannya dengan sangat rahasia. Dan kita akan memiliki layar dengan sebuah tombol Verifikasi Integrasi, seperti pada gambar di bawah ini, namun kita belum mengkliknya, tapi kita lanjutkan ke penulisan kodenya:

Fungsi Yandex mengirim email

2. Menulis kode

Namun kodenya sendiri, seperti yang Anda lihat, sangat kecil - 22 baris!

Fungsi Yandex mengirim email

Di barisan #8 Email saya dikodekan secara keras (dan karena itu disembunyikan dengan malu-malu) - harap sebutkan email Anda. Dalam kehidupan nyata, kami akan menerima semua data (termasuk e-mail) dari objek peristiwa. Misalnya jika metodenya POST sebuah objek dikirim ke fungsi kita pemakai dengan bidang (properti) e-mail, nilai bidang ini dapat diperoleh seperti ini:

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

Dan jika alamat email diteruskan ke fungsi menggunakan metode ini DAPATKAN, misalnya: https://functions.yandexcloud.net/123abc?[email protected]
nilai parameter e-mail Anda bisa mendapatkannya seperti ini:

const email = event.queryStringParameters.email;

Untuk melihat apa sebenarnya yang terkandung dalam suatu benda peristiwa, Anda dapat membuat yang paling sederhana fungsi Yandex dan memutarnya dengan pertanyaan:

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

Hal ini dibahas secara lebih rinci (tetapi kurang jelas) dalam dokumentasi resmi di sini.

Jadi, buat direktori proyek (misalnya, pengirim), buka, inisialisasi proyek, instal dependensi:

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

Di sini hanya paket yang diperlukan @sendgrid/mail. Kantong plastik validator email cek keabsahan alamat emailnya (kok saya gak langsung tebak?), tapi kalau sudah yakin (sudah lama dicek tanpa kita), kita tidak perlu install (dan tentu saja tentu saja, kita tidak perlu memeriksanya di kode). Kantong plastik dotenv dirancang untuk membaca catatan dari file .env sebagai variabel runtime. Tapi di Fungsi Yandex Dimungkinkan untuk menempatkan variabel-variabel ini langsung ke lingkungan runtime. Bagaimana? - Aku akan menunjukkannya di bawah. Oleh karena itu paketnya dotenv Anda juga tidak dapat menginstalnya, dan file tersebut .env - jangan membuat, dan pada saat yang sama kodenya ada di file index.js Jangan berubah. Tapi di sini kami telah menginstal paket ini, jadi kami membuat file index.js ΠΈ .env:

touch index.js
touch .env

Dalam file index.js tulis 22 baris kode seperti pada gambar di atas (hanya pada baris #8 ubah email Anda), dan di file .env - (tanpa tanda kutip atau tanda baca) tentukan pasangan - nama/nilai kunci APIyang baru-baru ini kami terima di konsol SendGrid:
SENDGRID_API_KEY=kunci-sendgrid-api-Anda-sangat-rahasia

Dan jika Anda ingin lebih sedikit pekerjaan, kloning repositori dan instal paketnya:

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

Dalam file index.js, Di barisan #8 ganti e-mail; buat file di direktori root .env, dan di dalamnya menunjukkan nama/nilai kunci API, seperti yang ditunjukkan di atas.

3. Menyebarkan

Kurang lebih jelas dan detail tentangnya Yandex.Cloud dan bagaimana menempatkannya di sana Fungsi Yandex dijelaskan dalam artikel saya Alice di tanah Bitrix - Saya mengirim orang bodoh ke negara ini, dan untuk semua orang (dan mereka yang kembali) - kemudian sebuah buku komik kecil (yaitu serangkaian gambar dan teks).

Membuat zip-archive (sebut saja, misalnya, mailer.zip), di mana kami menyertakan direktori node_modules dan file .env, indeks.js - semuanya dari katalog proyek kami:

Fungsi Yandex mengirim email

Kami membuat fungsi dengan nama... dengan benar - pengirim, di menu navigasi kiri kita masuk Editor, isi kolom yang wajib diisi, dan beralih ke tab arsip ZIP unduh arsip kami mailer.zip:

Fungsi Yandex mengirim email

Dan inilah opsi pengunduhan yang disebutkan sebelumnya Kunci API langsung di sini, daripada membuat file di proyek .env, dan jangan instal paketnya dotenv. Tapi ini semua sudah kita lakukan, jadi saya tampilkan hanya untuk sekedar informasi saja. Artinya, tidak perlu menduplikasi!

Fungsi Yandex mengirim email

Sekarang di pojok kanan atas klik tombol Buat Versi, dan tunggu beberapa detik. Jika semuanya sudah siap, otomatis kita akan masuk ke bagian tersebut Tinjau. Di sana kami akan mengaktifkan opsi tersebut fungsi publiksehingga Anda dapat berinteraksi dengannya dari dunia luar.

Fungsi Yandex mengirim email

Anda melihat tautan biru di seberang tulisan Tautkan ke panggilan? Klik itu. Jendela browser kosong akan terbuka... Tapi tunggu - saya menerima email:

Fungsi Yandex mengirim email

Sekarang Anda dapat kembali ke konsol SendGrid, dan tekan tombol Verifikasi Integrasi. Sistem akan memeriksa semuanya melalui salurannya, dan sebagai hasilnya, sistem akan mengembalikan layar seperti ini:

Fungsi Yandex mengirim email

Itu saja, kawan (dan perempuan, tentu saja) - semuanya sangat sederhana dan elegan! Akan ada lebih banyak artikel. Jika ada yang tertarik membaca hal seperti ini, berlanggananlah agar tidak ketinggalan.

4. Sumbangan

Fungsi Yandex mengirim email

Sumber: www.habr.com

Tambah komentar