Funções Yandex enviar e-mail

Funções Yandex enviar e-mail

Hoje vamos criar o chamado. Função Yandex (nome oficial Funções da Nuvem Yandex), que conspirou com o serviço de mailing SendGrid enviará “sabão” para usuários que dormem pacificamente (brincadeirinha - sei que somos todos contra spam).

Também sou adversário (mas sem fanatismo) dos servidores tradicionais, e defensor dos chamados. sem servidor soluções (sem servidor), porque não gosto (e não sei muito bem) administrar servidores e, mais ainda, pagar pelo tempo em que eles não estão carregados. Outra coisa são as funções. Alguém os atende sem mim e eu só pago pelas ligações. No início de outubro de 2019, Yandex apresentou seu Funções da Nuvem Yandex - parece ser o primeiro na Federação Russa sem servidor. E o que é especialmente interessante é que, para as habilidades de Alice, elas geralmente são gratuitas, então estão na minha visão periférica desde então. Mas vamos começar já.

Vamos imaginar esse cenário. Sua aplicação (por exemplo, a habilidade de Alice Lembre-se e esqueça que, aliás, também funciona Funções Yandex) convida o usuário a comprar um produto digital, por exemplo, opções adicionais, e o usuário efetua um pagamento. Algum tipo de sistema de pagamento (confusamente semelhante ao Yandex) processa o pagamento e o envia para o endereço que você fornecer (e teremos um link para ligar Funções do Yandex) HTTP-uma solicitação contendo dados de pagamento, como valor, nome completo, telefone e e-mail do pagador. Queremos processar esses dados de alguma forma, por exemplo: verificar o valor, fazer os devidos lançamentos no banco de dados, enviar aos usuários SMS и E-mail com confirmação de recebimento do pagamento e demais instruções. Então você mesmo microsserviço.

Sobre como de Funções Yandex fazer entradas no banco de dados Cloud Fire Store já vimos isso no tutorial Alice se lembra de tudo (e no futuro, creio, consideraremos um exemplo para outro banco de dados - Banco de dados Yandex). Sobre como enviar aos usuários SMS e integrar nosso aplicativo com Yandex.Money - resolveremos isso em um futuro próximo. Agora vamos apenas lidar com o envio de cartas.

1. Crie uma conta no SendGrid

NotaSendGrid é apenas minha escolha, que fiz por vários motivos, sendo o principal deles o fato de eles terem um SDK pronto para Node.js. Você pode escolher qualquer outro serviço de correio.

Seguir em frente para a página de registro da conta e preencha o formulário de inscrição lá. Então vamos para Painel, no painel de navegação selecione API de e-mail -> Guia de integração, e no painel principal - API da web e нажимаем кнопку Escolha. Tudo está como na foto:

Funções Yandex enviar e-mail

Na próxima etapa selecionamos Node.js:

Funções Yandex enviar e-mail

Em seguida, criamos para o nosso API-key name (será exibido apenas no console na lista de chaves e não tem nada a ver com nosso código futuro; acabei de criar um imperecível chave demo-api) e pressione o botão Criar chave:

Funções Yandex enviar e-mail

A chave será gerada, iremos copiá-la e mantê-la em total sigilo. E teremos uma tela com um botão Verifique a integração, como na imagem abaixo, mas não vamos clicar ainda, mas vamos escrever o código:

Funções Yandex enviar e-mail

2. Escrevendo código

Mas o código em si, como você pode ver, é ridiculamente pequeno – 22 linhas!

Funções Yandex enviar e-mail

Em linha #8 Meu e-mail está codificado (e, portanto, timidamente oculto) - indique o seu. Na vida real, receberemos todos os dados (incluindo email) do objeto evento. Por exemplo, se o método POST um objeto é enviado para nossa função usuário com campo (propriedade) email, o valor deste campo pode ser obtido assim:

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

E se o endereço de email for passado para a função usando o método ENTRE, Por exemplo: https://functions.yandexcloud.net/123abc?[email protected]
valor do parâmetro email você pode conseguir assim:

const email = event.queryStringParameters.email;

Para dar uma olhada no que exatamente está contido em um objeto evento, você pode criar o mais simples Função Yandex e distorça-o com consultas:

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

Isto é discutido com mais detalhes (mas menos claramente) na documentação oficial aqui.

Então, crie um diretório de projeto (por exemplo, mala direta), vá até ele, inicialize o projeto, instale as dependências:

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

Aqui apenas o pacote é necessário @sendgrid/mail. Saco de plástico validador de e-mail verifica a validade do endereço de e-mail (como não adivinhei imediatamente?), mas se tivermos certeza (já foi verificado há muito tempo sem nós), não precisamos instalá-lo (e, claro claro, não precisamos verificar isso no código). Saco de plástico dotenv projetado para ler registros de um arquivo .env como variáveis ​​de tempo de execução. Mas em Funções Yandex É possível colocar essas variáveis ​​diretamente no ambiente de execução. Como? - Vou mostrar abaixo. Portanto o pacote dotenv você também não pode instalá-lo, e o arquivo .env - não crie, e ao mesmo tempo o código está no arquivo index.js não mude. Mas aqui instalamos este pacote, então criamos arquivos index.js и .env:

touch index.js
touch .env

No arquivo index.js escreva 22 linhas de código mostradas na imagem acima (apenas na linha #8 altere seu e-mail) e no arquivo .env - (sem aspas ou pontuação) especifique o par - nome/valor da chave APIque recebemos recentemente no console SendGrid:
SENDGRID_API_KEY=sua-chave-de-api-muito-secreta

E se quiser menos trabalho, clone o repositório e instale os pacotes:

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

No arquivo index.js, em linha #8 Mude o e-mail; crie um arquivo no diretório raiz .env, e nele indique o nome/valor da chave API, conforme mostrado logo acima.

3. Implantar

Mais ou menos claramente e detalhadamente sobre Yandex.Cloud e como colocá-lo lá Funções do Yandex descrito no meu artigo Alice na terra do Bitrix - Mando os ignorantes para este país, e para todos os outros (e os que regressaram) - depois uma pequena banda desenhada (ou seja, uma série de imagens e texto).

Nós criamos zip-archive (vamos chamá-lo, por exemplo, mailer.zip), no qual incluímos o diretório node_modules e arquivos .env, index.js - tudo do nosso catálogo de projetos:

Funções Yandex enviar e-mail

Criamos uma função com o nome... corretamente - mala direta, no menu de navegação esquerdo entramos editor, preencha os campos obrigatórios e mude para a guia arquivo ZIP baixe nosso arquivo mailer.zip:

Funções Yandex enviar e-mail

E aqui está a opção de download mencionada anteriormente Chave API diretamente aqui, em vez de criar um arquivo no projeto .enve não instale o pacote dotenv. Mas já fizemos tudo isso, então estou mostrando apenas para informação. Ou seja, não há necessidade de duplicar!

Funções Yandex enviar e-mail

Agora no canto superior direito clique no botão Criar versãoe aguarde alguns segundos. Quando tudo estiver pronto, iremos automaticamente para a seção visão global. Lá vamos habilitar a opção função públicapara que você possa interagir com ele do mundo exterior.

Funções Yandex enviar e-mail

Você vê o link azul oposto à inscrição Link para ligar? Clique. Uma janela vazia do navegador será aberta... Mas espere - recebi um email:

Funções Yandex enviar e-mail

Agora você pode retornar ao console SendGrid, e pressione o botão Verifique a integração. O sistema irá verificar tudo através de seus canais, e como resultado deverá retornar uma tela como esta:

Funções Yandex enviar e-mail

É isso, rapazes (e meninas, claro) - tudo é realmente muito simples e elegante! Haverá mais artigos. Se alguém estiver interessado em ler algo assim, inscreva-se para não perder.

4. Doações

Funções Yandex enviar e-mail

Fonte: habr.com

Adicionar um comentário