Enviando e-mails com a namespace System.Net.Mail

 

Enviar e-mails em .NET é uma tarefa bastante simples e rápida. Para enviar emails em .NET você deve importar a namespace que contém as classes, os métodos e propriedades que fazem este serviço. Na versão anterior da .Net Framework (versão 1.1) usávamos as classes do namespace System.Web.Mail. Na versão 2.0 agora temos novas classes que estão presentes no namespace System.Net.Mail

 

Neste artigo demonstraremos como usar a namespace System.Net.Mail para enviar e-mails através de um projeto ASP.Net utilizando o VB.Net. Para começar então, crie um novo WebSite: File -> New WebSite. No Design da nossa página Web insira uma tabela com algumas linhas e alguns componentes: Button,TextBox e Label de forma que o formulário de envio de e-mail fique semelhante a figura abaixo:

 

rmeensnmfig01.jpg 

Figura 1 – Formulário para Envio de E-mail no ASP.Net.

 

Em .Net para enviar um e-mail vamos utilizar de duas classes do namespace System.Net.Mail:

·         MailMessage que representa um mensagem de E-mail e Possui as propriedades: From(Remetente), To(Para), Subject(Assunto), Body(Corpo da Mensagem), etc.

·         SmtpClient - Envia um objeto MailMessage para um servidor SMTP que enviará a mensagem ao destinatário.

 

A System.Net.Mail contém ainda classes que permitem a utilização de funcionalidades avançadas como: anexos, informações de autenticação de servidor SMTP, etc.

 

Vamos agora a codificação a ser feita para enviar e-mail. Antes de tudo é necessário importar a namespace a ser utilizada: Imports System.Net.Mail

        

O próximo passo será codificar o evento click do botão Enviar. Primeiro vamos criar um objeto MailMessage e atribuir ao objeto as propriedades pertinentes ao Email (remetente, destinatário,copia, copia oculta, assunto, e mensagem). Veja na figura abaixo a configuração da mensagem de e-mail a ser enviada.

 

'Cria um objeto do tipo Mail Message que contém as informações do e-mail

Dim Email As New MailMessage

 

'remetente

Email.From = New MailAddress(txtDe.Text)

'destinatario

Email.To.Add(txtPara.Text)

'destinatario de copia do email

Email.To.Add(txtCc.Text)

'destinatario de copia oculta

Email.Bcc.Add(txtCco.Text)

 

'prioridade de envio

Email.Priority = MailPriority.High

 

'formato do email

Email.IsBodyHtml = True

 

'assunto do email

Email.Subject = txtAssunto.Text

 

'mensagem do email

Email.Body = txtMensagem.Text

Figura 2 – Configuração da Mensagem de E-mail.

 

Em seguida vamos criar um objeto SmtpClient e definir as configurações sobre o servidor SMTP, e por ultimo chamar o método Send para enviar o E-mail. Não esqueça de informar um servidor SMTP válido na propriedade Host e configurar suas informações de autenticação que podem ser feitas via webConfig, conforme a figura 4. Veja na figura abaixo:

 

        'cria o objeto SMTP

        Dim Smtp As New SmtpClient

        Smtp.Host = "INFORME AQUI O ENDERECO IP DO SERVIDOR"

        Smtp.Port = 25

 

        Try

            'envia o email

            Smtp.Send(Email)

            'envia um alerta ao usuario que o e-mail foi enviado com sucesso

            Dim script As String = "<script>alert('Email Enviado com sucesso!');</script>"

            ClientScript.RegisterClientScriptBlock(Me.GetType, "clientScript", script)

 

        Catch ex As Exception

            'envia um alerta ao usuario que o e-mail foi enviado com sucesso

            Dim script As String = "<script>alert('Houve um erro ao enviar o e-mail!');</script>"

            ClientScript.RegisterClientScriptBlock(Me.GetType, "clientScript", script)

 

        Finally

 

            'chama o metodo LimparCampos para limpar os campos do formulario

            LimparCampos()

        End Try

Figura 3 – Enviando o E-mail.

 

<configuration>

  <system.net>

    <mailSettings>

      <smtp>

        <network host="SERVIDOR" port="25" userName="usuario" password="senha" />

      </smtp>

    </mailSettings>

  </system.net>

Figura 4 – Configurações para autenticação no servidor SMTP

 

Chegamos ao final desse artigo. Até a próxima oportunidade.