C# - Enviando emails com SendGrid


 No artigo de hoje vou mostrar como podemos usar a API do SendGrid para enviar emails em uma aplicação Windows Forms usando a linguagem C#.

A SendGrid, empresa norte-americana de serviço de gerenciamento de e-mails, opera no Brasil desde 2012 e  oferece infraestrutura de e-mails na nuvem, com suporte 24 horas e oferta de serviços adicionais, como relatórios de métricas para acompanhamento de desempenho.



Os serviços são vendidos em pacotes que variam, em valores, de US$ 0,10 por mil e-mails a US$ 399,95 por mês, dependendo dos recursos contratados.

Atualmente existem 3 tipos de pacotes :

  1. Pacote Gratuito (esse é o que vamos usar)
  2. Pacote Essencial - 40.000 mil emails por mês - $ 9,95 por mês
  3. Pacotes Pro :
    1. Prata - 100.000 mil emails por mês -  $ 79,95
    2. Ouro - 300.000 mil emails por mês - $ 199,95
    3. Platina - 700.000 mil email por mês - $ 399.95

Para ver mais detalhes consulte o link :   SendGrid® - Sendgrid.com‎

O que interessa é que você pode se cadastrar como usuário no pacote gratuito e usar o serviço da SendGrid em sua aplicação C#. Depois se realmente você precisar e achar que o serviço te atende pode assinar um plano pago.

Para criar um usuário e uma senha que serão necessários para podermos enviar email acesse o link: https://sendgrid.com/   e clique no botão Try for Free.

A seguir faça o registro preenchendo o formulário mostrado abaixo:

Ao final você deverá ter um usuário e senha cadastrados no SendGrid.

A seguir vou mostrar um exemplo de como podemos enviar emails usando a API do SendGrid usando a  linguagem C#.

  • Recursos usados:

    Criando o projeto no VS 2013

    Então abra o VS 2013 Express for Windows desktop e clique em New Project;

    Selecione a linguagem C# e o template Windows Forms Application e informe o nome EnviandoEmails-SendGrid;

    A seguir a partir da ToolBox inclua os seguintes controles no formulário form1.cs :

    • GroupBox - Origem/Destino

    • 3 Labels

    • 3 TextBox - txtOrigem, textDestino, txtAssunto

    • GroupBox - Mensagem

    • TextBox - txtMensagem , Multiline=True

    • 2 Buttons - btnCancelar e btnEnviar

    Disponha os controles conforme o leiaute da figura abaixo:

    Clique no menu TOOLS e a seguir em Nuget Package Manager -> Package Manage Console :

    Na janela do Console digite o comando para incluir a library SendGrid no projeto: Install-Package SendGrid

    Você também pode instalar da seguinte forma:

    Clique no menu TOOLS e a seguir em Nuget Package Manager -> Manage Nuget Package for Solution :

    A seguir Informe na caixa de busca o nome send grid e após o pacote ser localizado clique no botão Install:

    Vamos criar a classe Email no projeto para representar um email.

    No menu PROJECT clique em Add Class e informe o nome Email.cs.

    A seguir digite o seguinte código nesta classe :

    namespace EnviandoEmails_SendGrid
    {
        public class Email
        {
            public string origem { get; set; }
            public string destino { get; set; }
            public string assunto { get; set; }
            public string mensagem { get; set; }
            public string usuario { get; set; }
            public string senha { get; set; }
        }
    }

    Agora vamos criar a classe EnviarEmail onde iremos usar os recursos da API SendGrid para enviar o email.

    No menu PROJECT clique em Add Class e informe o nome EnviarEmail.cs.

    A seguir digite o seguinte código nesta classe :

    using System;
    using System.Net;
    using System.Net.Mail;
    using SendGrid;
    namespace EnviandoEmails_SendGrid
    {
        public class EnviarEmail
        {
            public void Enviar(Email _email)
            {
                try
                {
                    /* Cria a mensagem de email
                     * ===================================================*/
                    var minhaMensagemEmail = new SendGridMessage();
                    minhaMensagemEmail.AddTo(_email.destino);
                    minhaMensagemEmail.From = new MailAddress(_email.origem);
                    minhaMensagemEmail.Subject = _email.assunto;
                    minhaMensagemEmail.Text = _email.mensagem;
                    /* Envia a menssasgem
                     * ===================================================*/
                    var credentials = new NetworkCredential(_email.usuario, _email.senha);
                    // Cria um transporte web para enviar email
                    var transporteWeb = new Web(credentials);
                    // Enviar email
                    transporteWeb.DeliverAsync(minhaMensagemEmail);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
    }

    O código acima cria um instância da classe SendGridMessage() , atribui os valores referente aos dados do email, define as credenciais do usuário e envia o email.

    A seguir para usar a classe vamos definir o código abaixo no evento Click do botão de comando Enviar o do formulário form1.cs :

    using System;
    using System.Windows.Forms;
    namespace EnviandoEmails_SendGrid
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void btnEnviar_Click(object sender, EventArgs e)
            {
                try
                {
                    Email email = new Email();
                    email.origem = txtOrigem.Text;
                    email.destino = txtDestino.Text;
                    email.assunto = txtAssunto.Text;
                    email.mensagem = txtMensagem.Text;
    
                    //aqui você informa seu usuário e senha no SendGrid
                    email.usuario = "*********";
                    email.senha = "********";
                    EnviarEmail mandaEmail = new EnviarEmail();
                    mandaEmail.Enviar(email);
                    MessageBox.Show("Email enviado com sucesso", "Email enviado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch(Exception ex)
                {
                    MessageBox.Show("Erro :" + ex.Message, "Erro ao enviar Email", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
    }

    O código cria um objeto email do tipo Email e passa as informações do email para o objeto. A seguir usamos o método Enviar da classe EnviarEmail passando o objeto email com as informações do email a ser enviado.

    Executando o projeto informando os dados do email e clicando no botão Enviar, iremos obter o seguinte resultado:

    Verificando a atividade da conta no SendGrid veremos os emails enviados conforme abaixo: (Enviei dois emails)

    Assim usar os recursos do SendGrid em seu projeto C# é muito simples.

    Pegue o projeto completo aqui :  EnviandoEmails-SendGrid.zip

    E, porque sois filhos, Deus enviou aos vossos corações o Espírito de seu Filho, que clama: Aba, Pai.
    Assim que já não és mais servo, mas filho; e, se és filho, és também herdeiro de Deus por Cristo.
    Gálatas 4:6,7

    Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

    Quer migrar para o VB .NET ?

    Quer aprender C# ??

    Quer aprender os conceitos da Programação Orientada a objetos ?

    Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

      Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

    Referências:


    José Carlos Macoratti