Enviando e-mail no Asp.NET usando o provedor GMAIL

Neste curto artigo estarei demonstrando com enviar e-mail através de uma página ASP.NET utilizando o provedor Gmail, este artigo têm como foco estudantes que estão iniciando em desenvolvimento de sistemas.

Requisitos para o Exemplo: Neste nosso exemplo iremos usar o Visual Studio 2008 com Framework 3.5, caso não tenha instalado, efetue o download gratuitamente no seguinte site :  http://www.microsoft.com/Express/

Primeiramente abra o Visual Studio 2008, vá em File -> New -> Project, na tela de New Project escolha o projeto de C# -> Web,o nome do projeto e da solução deixe como SendMail

Agora vá em Solution Explorer e veja os itens que o Visual Studio criou, procure o arquivo Default.aspx e dê um duplo clique nele. A página irá abrir em branco insira os seguintes controles dentro da página conforme tabela abaixo.

Nota: (Procure os controles na aba ToolBox se a mesma não estiver visível pressione CTRL+ALT+X)

 

Controle

Propriedades

Observação

TextBox

- Altere a propriedade ID do controle para “destinatarioTextBox”;

É importante sempre que inserir um controle na pagina um nome simples e objetivo para que o mesmo possa ser localizado facilmente no código.

TextBox

- Altere a propriedade ID do controle para “mensagemTextBox”;

- Altere a propriedade TextMode para multiline;

 

Button

- Altere a propriedade ID do controle para “enviarButton”;

Este será o botão responsável por disparar o evento que irá chamar o envio do e-mail.

Label

- Altere a propriedade ID do controle para “RespostaEnvioLabel”;

- Altere a propriedade Visible para false;

Esta Label irá receber a mensagem se o envio foi executado com sucesso ou não, esta mensagem irá aparecer somente depois do envio.

 

Veja um exemplo abaixo da imagem2 de como deverá ficar sua página:


Imagem2 – Controles na página

Clique com o botão direito do mouse em qualquer ponto da página e escolha a opção ViewCode, no topo do código faça a inserção das seguintes linhas (abaixo) .

 

   1:  using System.Net.Mail;
   2:  using System.Net.Configuration;

Volte para o arquivo Default.aspx e dê um duplo clique no botão enviar e insira o código abaixo dentro do evento enviarButton_Click:

 
 
   1:  //O e-mail do remetente
   2:  string remetenteEmail = "nbsjunior@gmail.com"; 
   3:  MailMessage mail = new MailMessage();
   4:  mail.To.Add(destinatarioTextBox.Text);
   5:  mail.From = new MailAddress(remetenteEmail, "Nelson Borges", 
System.Text.Encoding.UTF8);
   6:  mail.Subject = "Assunto:Este e-mail é um teste do Asp.Net";
   7:  mail.SubjectEncoding = System.Text.Encoding.UTF8;
   8:  mail.Body = mensagemTextBox.Text;
   9:  mail.BodyEncoding = System.Text.Encoding.UTF8;
  10:  mail.IsBodyHtml = true;
  11:  //Prioridade do E-Mail
  12:   mail.Priority = MailPriority.High;
  13:   
  14:  SmtpClient client = new SmtpClient();
  15:  //Adicionando as credenciais do seu e-mail e senha:
  16:  client.Credentials = new System.Net.NetworkCredential
(remetenteEmail, "digiteAquiSuaSenhaGmail");
  17:   
  18:  // Esta porta é a utilizada pelo Gmail para envio
  19:  client.Port = 587;
  20:   
  21:  //Definindo o provedor que irá disparar o e-mail
  22:  client.Host = "smtp.gmail.com";
  23:   
  24:  //Gmail trabalha com Server Secured Layer
  25:   client.EnableSsl = true; 
  26:   try
  27:   {
  28:  client.Send(mail);
  29:  respostaEnvioLabel.Text = "Envio do E-mail com sucesso";
  30:  respostaEnvioLabel.Visible = true;
  31:  }
  32:  catch (Exception ex)
  33:  {
  34:  respostaEnvioLabel.Text = "Ocorreu um erro ao enviar:" 
+ ex.Message;
  35:  respostaEnvioLabel.Visible = true;
  36:  }
  37:   

Vamos à explicação do código acima: Para o envio do e-mail é necessário a utilização do namespace System.Web.Mail, para mais detalhes acesse: http://msdn.microsoft.com/en-us/library/system.web.mail.aspx dentro deste namespace você irá encontrar as várias classes relacionadas ao envio de e-mail:

MailMessage – Classe usada para criar e manipular o conteúdo de mensagem, no nosso exemplo instanciamos esta classe com o nome de mail (MailMessage mail = new MailMessage();).

Bom agora que entendemos o MailMessage vamos continuar com a explicação de cada linha do código que inserimos:

mail.To: Nesta linha estamos adicionando o valor do texto digitado na textbox destinatário, esta valor esta sendo passado para a propriedade To do mail através do método Add.

mail.From: Aqui estamos definindo o endereço de origem (remetente) que utilizaremos para enviar a apresentação do e-mail, no nosso caso usamos o MailAddress que é uma classe da System.Web.Mail usada para especificar o endereço de e-mail, exibição do nome no e-mail etc.

mail.Subject: Nesta linha estamos adicionando o assunto do e-mail.

mail.Body: Aqui estamos adicionando o conteúdo digitado no textbox mensagem ao corpo do e-mail.

mail.IsBodyHtml: Aqui definimos que o corpo da mensagem será um HTML, esta definição é um valor booleano ou seja true para verdade e false para falso.

mail.Priority: Você pode definir a prioridade do e-mail através desta propriedade.

No nosso exemplo estamos enviando um e-mail através do SMTP, existem outras formas que não serão tratadas neste artigo, dentro do namespace Sytem.Web.Mail existe também a classe SmtpClient que irá permitir o envio do e-mail, mais detalhes acesse: http://msdn.microsoft.com/pt-br/library/system.net.mail.smtpclient.aspx

client.Credentials: Após instanciar a classe SmtpClient, iremos definir algumas propredades, a primeira é a Credentials que irá validar o usuário e a senha no host (provedor de e-mail no nosso caso o Gmail), repare que usamos as credencias a classe da System .Net chamada NetworkCredential , esta classe fornece credenciais para esquemas de autenticação baseada em senhas como NTLM e Kerberos, mas detalhes acesse: http://msdn.microsoft.com/pt-br/library/system.net.networkcredential.aspx

client.Port: Aqui você irá definir a porta de saída do e-mail, como default é a porta 25, porém no provedor de SMTP do Gmail é utilizado a porta 587, a definição da porta é muito importante estar correto pois o envio do e-mail pode falhar por isso.

client.Host: O Host é provedor do serviço de e-mail, no nosso caso o Gmail, para outros provedores, é necessário conhecer o endereço de configuração do smtp, que neste artigo é “smtp.gmail.com”.

client.EnableSsl: Esta propriedade define se iremos utilizar o SSL para criptografar o e-mail.

client.Send: Este é método é responsável pelo envio do e-mail (MailMessage) que configuramos acima.

Finalizando o artigo, você agora pode efetuar um teste com sua nova página de envio de e-mails, basta apertar F5 no Visual Studio preencher os dados e clicar em enviar…

Até mais..

2 Responses to “Enviando e-mail no Asp.NET usando o provedor GMAIL”

  1. henrique  on maio 25th, 2010

    Cara, valeu ai muito obrigado, me ajudou muito aqui valeu.

  2. Rodrigo Wirth  on agosto 10th, 2010

    Valeu cara.. bem simples e util… Abraço!!


Leave a Reply