Formulário para envio de e-mail em ASP.NET

Olá pessoal, tudo bom?

Deixo aqui uma pequena dica para aqueles que querem enviar e-mails a partir de formulários ou rotinas em ASP.NET. O Framework .NET possui um namespace específico para esse fim que é o System.Net.Mail. Tal namespace possui uma série de classes e métodos para a prática de envio de e-mail, porém exploro apenas algumas delas nos exemplos a seguir:

Exemplo 1: Enviando mensagens sem formatação de texto ou anexos

....
using System.Net.Mail;
....
....
protected void btnEnviar_Click(object sender, EventArgs e)
{
   SmtpClient email = new SmtpClient("smtp.servidor.com"); //Utilize seu próprio servidor SMTP
   try
   {
      email.Send(txtEmailRemetente.Text,txtTo.Text,txtAssunto.Text,txtMensagem.Text);
      lblMensagem.Text = "OK";
   }
   catch (Exception erro)
   {
      lblMensagem.Text = erro.Message;
   }
}

Exemplo 2: Enviando mensagens com textos formatados, com cópia ou cópia oculta e anexos

....
using System.Net.Mail;
....
....
protected void btnEnviar_Click(object sender, EventArgs e)
{
   SmtpClient email = new SmtpClient("smtp.servidor.com"); //Utilize seu próprio servidor SMTP
   try
   {
      MailMessage msg = new MailMessage();
      MailAddress remetente = new MailAddress(txtEmailRemetente.Text, txtNomeRemetente.Text);
      msg.From = remetente;
      msg.Subject = txtAssunto.Text;
      msg.Body = txtMensagem.Text;
      msg.IsBodyHtml = true;
      if (!txtTo.Text.Equals(string.Empty)) //Verifica se há destinatário
         msg.To.Add(txtTo.Text);
      if (!txtCC.Text.Equals(string.Empty)) //Verifica se há destinatário com cópia
         msg.CC.Add(txtCC.Text);
      if (!txtBCC.Text.Equals(string.Empty)) //Verifica se há destinatário com cópia oculta
         msg.Bcc.Add(txtBCC.Text);

      if (fuAnexo.HasFile) //Verifica se há anexo
      {
         Attachment anexo = new Attachment(fuAnexo.PostedFile.InputStream, fuAnexo.FileName);
         msg.Attachments.Add(anexo);
      }

      email.Send(msg);
      lblMensagem.Text = "OK";
   }
   catch (Exception erro)
   {
      lblMensagem.Text = erro.Message;
   }
}

Grande abraço,

Eduardo Henrique Rizo

[twitter-follow screen_name='eduardorizo' show_count='yes']

Marcado com: , , , , ,
2 comentários sobre “Formulário para envio de e-mail em ASP.NET
  1. Estou usando a hospedagem da locaweb, e ele retorna a seguinte msg ” Para envio de mensagens e necessaria autenticacao. ” … alguem sabe o que devo fazer?

    • Boa tarde Victor, tudo bom?
      Bastaria fazer o seguinte:


      email.UseDefaultCredentials = false;
      email.Credentials = new System.Net.NetworkCredential(“seu login”,”sua senha”);

      Abraços,
      Eduardo Henrique Rizo

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*