As funcións de Yandex envían correo

As funcións de Yandex envían correo

Hoxe imos crear o chamado. función Yandex (nome oficial Funcións de Yandex Cloud), que coludía co servizo de correo SendGrid enviará "xabón" aos usuarios que dormen tranquilamente (só bromeando: sei que todos estamos en contra do spam).

Tamén son opositor (pero sen fanatismo) dos servidores tradicionais, e partidario dos chamados. sen servidor solucións (sen servidor), porque non me gusta (e non sei moi ben como) administrar servidores, e máis aínda, pagar polo tempo que non se cargan. Outra cousa son as funcións. Alguén as presta sen min, e eu só pago polas chamadas. A principios de outubro de 2019, Yandex presentou o seu Funcións de Yandex Cloud - parece ser o primeiro da Federación Rusa sen servidor. E o que é especialmente agradable é que as habilidades de Alice son xeralmente gratuítas, polo que están na miña visión periférica desde entón. Pero empecemos xa.

Imaxinemos este escenario. A túa aplicación (por exemplo, a habilidade de Alice Lembra e esquece que, por certo, tamén funciona Funcións de Yandex) invita ao usuario a mercar un produto dixital, por exemplo, opcións adicionais, e o usuario realiza un pago. Algún tipo de sistema de pago (confusamente semellante a Yandex.Money) procesa o pago e envíao ao enderezo que indicas (e teremos unha ligazón para chamar Funcións de Yandex) HTTP- unha solicitude que conteña os detalles do pagamento, como o importe, o nome completo, o número de teléfono e o correo electrónico do pagador. Queremos procesar estes datos dalgún xeito, por exemplo: comprobar a cantidade, facer as entradas adecuadas na base de datos, enviar aos usuarios SMS и email con confirmación da recepción do pago e instrucións adicionais. Así que ti mesmo microservizo.

Sobre como dende Funcións de Yandex facer entradas na base de datos Cloud Firestore xa o miramos no tutorial Alicia recorda todo (e no futuro, creo, consideraremos un exemplo para outra base de datos - Base de datos Yandex). Sobre como enviar aos usuarios SMS e integrar a nosa aplicación con Yandex.Diñeiro - Resolverémolo nun futuro próximo. Agora imos ocuparnos do envío de cartas.

1. Crea unha conta en SendGrid

NotaSendGrid é só a miña elección, que fixen por varias razóns, a principal é que teñen un SDK preparado para Node.js. Podes escoller calquera outro servizo de correo.

Sigamos adiante á páxina de rexistro da conta e enche alí o formulario de inscrición. Despois imos a panel de control, no panel de navegación seleccione API de correo electrónico -> Guía de integración, e no panel principal - API web e нажимаем кнопку Escoller. Todo é como na imaxe:

As funcións de Yandex envían correo

No seguinte paso seleccionamos Nodo.js:

As funcións de Yandex envían correo

A continuación vemos para o noso API-key name (só aparecerá na consola na lista de claves, e non ten nada que ver co noso futuro código; ocorréuseme un imperecedoiro clave demo-api) e prema o botón Crear clave:

As funcións de Yandex envían correo

Xerarase a clave, copiarémola e gardarémola na máis profunda confianza. E teremos unha pantalla cun botón Verificar a integración, como na imaxe de abaixo, pero aínda non faremos clic nel, pero imos escribir o código:

As funcións de Yandex envían correo

2. Código de escritura

Pero o código en si, como podes ver, é ridículamente pequeno: 22 liñas!

As funcións de Yandex envían correo

En liña #8 O meu correo electrónico está codificado (e polo tanto oculto tímidamente) - indica o teu. Na vida real, recibiremos todos os datos (incluíndo correo electrónico) do obxecto evento. Por exemplo, se o método POST envíase un obxecto á nosa función usuario con campo (propiedade) correo electrónico, o valor deste campo pódese obter así:

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

E se o enderezo de correo electrónico se pasa á función mediante o método GET, por exemplo: https://functions.yandexcloud.net/123abc?[email protected]
valor do parámetro correo electrónico podes obtelo así:

const email = event.queryStringParameters.email;

Para botar unha ollada ao que contén exactamente un obxecto evento, podes crear o máis sinxelo función Yandex e torceo con consultas:

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

Isto é discutido con máis detalle (pero con menos claridade) na documentación oficial aquí.

Entón, cree un directorio do proxecto (por exemplo, correo), vai a el, inicializa o proxecto, instala dependencias:

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

Aquí só se require o paquete @sendgrid/mail. Bolsa de plástico validador de correo electrónico comproba a validez do enderezo de correo electrónico (como non o adivinei de inmediato?), pero se estamos seguros diso (xa está comprobado durante moito tempo sen nós), non temos que instalalo (e, de por suposto, non temos que verificalo no código). Bolsa de plástico dotenv deseñado para ler rexistros dun ficheiro .env como variables de tempo de execución. Pero en Funcións de Yandex É posible colocar estas variables directamente no ambiente de execución. Como? - Mostrareino a continuación. Polo tanto o paquete dotenv tampouco pode instalalo, e o ficheiro .env - non cree, e ao mesmo tempo o código está no ficheiro índice.js non cambiar. Pero aquí instalamos este paquete, así que creamos ficheiros índice.js и .env:

touch index.js
touch .env

En arquivo índice.js escribe 22 liñas de código que se mostran na captura de pantalla anterior (só na liña #8 cambiar o seu correo electrónico) e no ficheiro .env - (sen comiñas nin signos de puntuación) especifique o par - nome/valor da chave APIque recibimos recentemente na consola SendGrid:
SENDGRID_API_KEY=a túa-chave-api-de-sendgrid-moi-secreta

E se queres menos traballo, clona o repositorio e instala os paquetes:

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

En arquivo índice.js, en liña #8 cambiar correo electrónico; crear un ficheiro no directorio raíz .env, e nel indica o nome/valor da chave API, como se mostra xusto arriba.

3. Despregar

De forma máis ou menos clara e detallada sobre Yandex.Cloud e como colocalo alí Funcións de Yandex descrito no meu artigo Alicia no país de Bitrix - Envio aos ignorantes a este país, e para todos os demais (e os que volveron) - entón un pequeno cómic (é dicir, unha serie de imaxes e texto).

Nós creamos enerxía-arquivo (chamémoslle, por exemplo, mailer.zip), no que incluímos o directorio módulos_nodo e arquivos .env, index.js - todo do noso catálogo de proxectos:

As funcións de Yandex envían correo

Creamos unha función co nome... correctamente - correo, no menú de navegación da esquerda entramos O editor, enche os campos obrigatorios e cambia á pestana Arquivo ZIP descarga o noso arquivo mailer.zip:

As funcións de Yandex envían correo

E aquí está a opción mencionada anteriormente para descargar Chave API directamente aquí, en lugar de crear un ficheiro no proxecto .env, e non instale o paquete dotenv. Pero xa fixemos todo isto, así que o amoso só para información. É dicir, non hai que duplicar!

As funcións de Yandex envían correo

Agora, na esquina superior dereita, fai clic no botón Crear versión, e agarda un par de segundos. Cando estea todo listo, iremos automaticamente á sección Comentar. Alí habilitaremos a opción Función públicapara que poidas interactuar con el desde o mundo exterior.

As funcións de Yandex envían correo

Ve o enlace azul fronte á inscrición Ligazón de chamada? Fai clic nel. Abrirase unha xanela baleira do navegador... Pero espera, recibín un correo electrónico:

As funcións de Yandex envían correo

Agora podes volver á consola SendGrid, e prema o botón Verificar a integración. O sistema comprobará todo a través das súas canles e, como resultado, debería devolver unha pantalla como esta:

As funcións de Yandex envían correo

Iso é todo, rapaces (e nenas, por suposto) - todo é moi sinxelo e elegante! Haberá máis artigos. Se alguén está interesado en ler algo así, subscríbase para non perder.

4. Doazóns

As funcións de Yandex envían correo

Fonte: www.habr.com

Engadir un comentario