Nos dias atuais, é comum que aplicações web façam o uso intensivo de notificações por e-mail. Por exemplo: ao realizar um novo cadastro de usuário, este deve ser notificado quanto a sua adição no sistema, relembrar/redefinir senha, relembrar e-mail, etc.
Para cenários com larga escala de acessos, onde grandes quantidades de mensagens são enviadas a cada minuto, provedores de e-mails gratuitos (como Gmail, Outlook, etc.) não lhe oferecerão uma solução real, pois eles bloqueiam a utilização de SMTP de forma ilimitada e portanto, você precisará recorrer a algum serviço de disparo de mensagens com esta característica.
Neste post, quero apresentar a vocês a solução encontrada pela Conio (empresa que dirijo atualmente) para endereçar este tipo de situação no contexto do Windows Azure (a plataforma de computação em nuvem da Microsoft) – a integração com a SendGrid.
Nativamente, o Windows Azure não oferece qualquer tipo de serviço de e-mail, entretanto, este tipo de serviço encontra-se disponível no modelo de add-on, graças a parceria com a SendGrid.
Adicionando o add-on da SendGrid
O processo de incorporação de add-ons no Windows Azure é extremamente simples. Trata-se do famoso “next, next, finish“. Assim, para acoplar o serviço de e-mails da SendGrid (considerando que você já se encontra no ambiente de gerenciamento do Windows Azure), basta clicar na opção “Add-ons”, cujo ícone é apresentado na Figura 1.
Figura 1. Clicando na opção add-ons
Ao clicar nesta opção, o portal de gerenciamento lhe apresentará, do lado direito, os add-ons que você, porventura, já tenha criado. Como próximo passo, clique no botão “+ New”, localizado na barra inferior do portal. Ao fazê-lo, será apresentada uma tela que lista todos os add-ons disponíveis atualmente. Selecione a opção SendGrid e preencha as informações solicitadas, conforme apresenta a Figura 2.
Figura 2. Selecionando o plano de e nomeando o recurso
Ao clicar em “Next“, você será apresentado a tela de aceitação dos termos de licença. Marque a caixa de aceitação e clique em “Finish“. Ao fazê-lo, você verá a barra inferior indicando o processo de criação do serviço. Após a conclusão deste processo, basta clicar sobre o serviço criado (lembre-se, ele estará disponível ao clicar no ícone de add-ons, apresentado pela Figura 1).
Clique sobre o nome do serviço recém criado (em nosso caso “SendGrid”). Ao fazê-lo, você será apresentado a tela de gerenciamento do serviço (Figura 3).
Figura 3. Tela de administração do add-on
Primeira etapa concluída com sucesso. Nosso serviço está pronto para disparar e-mails através da SendGrid. Resta agora criar a rotina de disparo de mensagens em sua aplicação, mas antes disso, vale a pena tecer um breve comentário sobre cada uma das opções disponíveis na barra inferior da Figura 3.
- Manage: ao clicar sobre esta opção você será direcionado para a tela de administração no portal da SendGrid. Lá você poderá completar seus dados cadastrais, mudar o plano, ver estatísticas de envio, etc.
- Connection Info: ao clicar sobre esta opção, o portal de gerenciamento do Windows Azure exibirá as informações necessárias para que sua aplicação possa disparar as mensagens através do SendGrid. Os dados exibidos são: Senha, Username e Servidor.
- Upgrade: nesta opção você será levado a um ambiente onde você poderá realizar o upgrade de seu plano de envio.
- Contact Settings: esta opção exibirá uma janela exibindo os dados do responsável pela contratação do serviço.
- Delete: como o próprio nome sugere, ao clicar nesta opção, você poderá remover o serviço existente.
A rotina de disparo de e-mails
Existem basicamente duas abordagens principais para se disparar mensagens através do SendMail: utilizando o próprio pacote disponibilizado pela SendGrid para isso (disponível via NuGet) ou utilizando o pacote .NET para disparo de mensagens – .NET Mail. Para este exemplo, utilizarei um exemplo imaginário de aplicação web com ASP.NET MVC e C# com .NET Mail.
Imaginando que temos um controller “Mensageria” e uma action “EnviaMensagemComSendGrid“, poderíamos ter a seguinte implementação:
Listagem 1. Rotina de disparo de mensagens
O código apresentado pela Listagem 1 é simples e dispensa maiores comentários. Algumas poucas considerações são:
- O primeiro bloco (linhas 13 a 15) cria o objeto da mensagem e determina, o destinatário e o remetente.
- O segundo bloco (linhas 17 a 21) apresenta as opções de composição da mensagem, com texto, html e determina o assunto da mensagem.
- O terceiro e último bloco (linhas 23 a 27), cria o objeto de envio (SMTP), determina as informações necessárias para envio (como servidor de envio, porta, usuário e senha), dispara a mensagem e retorna o status de sucesso (true), caso seja este o caso.
Simples, não? É evidente que, em nosso exemplo, temos dados estáticos. Entretanto, você poderia direcionar esta action para trabalhar com os dados de forma dinâmica, o agilizaria o processo de disparo das mensagens.
Era isso. Um forte abraço a todos!
Facebook
Twitter
Instagram
LinkedIn
RSS