Continuando a sessão Easy .Net, hoje vamos ver como enviar e-mail através do ASP.NET com algumas dicas de abordagem durante o desenvolvimento de aplicações ASP.NET.

O envio de e-mail através de uma aplicação hoje em dia tornou-se primordial. Seja através de um formulário “fale conosco” de um web site, seja para enviar avisos aos usuários de um sistema ou até enviar relatórios por e-mail. Isto sem contar sistemas de CRM, e-mail marketing, entre inúmeros outros casos o e-mail tornou-se uma ferramenta indispensável e de conhecimento obrigatório para qualquer desenvolvedor.

O .NET possui uma biblioteca bastante completa para o envio de e-mail e a partir da versão 2.0 ficou ainda mais fácil. Neste artigo da sessão Easy .Net vamos aprender como enviar e-mails utilizando o namespace System.Net.Mail. Neste namespace contamos com diversas classes, enumerações e delegates que nos auxiliam no envio de e-mail.

Conhecendo o namespace System.Net.Mail

O System.Net.Mail é o namespace que contém as classes utilizadas para envio de e-mail utilizando o SMTP (Simple Mail Transfer Protocol). Na Tabela 1, podemos visualizar uma descrição das classes do namespace. Em linhas gerais nós temos classes que tratam a mensagem que será enviada. Este trabalho é realizado pela classe MailMessage. Os anexos são tratados pela classe Attachment, que pode ter uma coleção, tratada pela classe AttachmentCollection. O remetente e os destinatários são tratados pela classe MailAddress.

A conexão com o servidor pode ser feita através da classe SmtpClient, que fará o envio do e-mail. Normalmente um servidor requisita autenticação por usuário e senha, e para isso podemos contar com a classe System.Net.NetworkCredential. Esta encapsula todo o trabalho de autenticação.

No exemplo, veremos como fazer com que estas classes trabalhem em conjunto para que o e-mail seja enviado com sucesso.

Classes Descrição
AlternateView Representa o formato para visualização da mensagem
AlternateViewCollection Representa uma coleção de AlternateView
Attachment Representa o arquivo anexo
AttachmentBase Classe que representa um anexo de e-mail. As classes Attachment, AlternateView, and LinkedResource são derivadas desta classe.
AttachmentCollection Coleção que armazena os anexos que serão enviados neste e-mail
LinkedResource Representa um recurso externo em um anexo do e-mail, como uma imagem em um HMTL.
LinkedResourceCollection Armazena recursos vinculados a ser enviado como parte da mensagem do e-mail
MailAddress Representa o endereço de e-mail do remetente ou destinatário
MailAddressCollection Armazena um endereço de e-mail associado à mensagem
MailMessage Representa a mensagem a ser enviada pelo SmtpClient
SmtpClient Permite a aplicação enviar e-mail utilizando o SMTP
SmtpException Representa a exceção quando o servidor não consegue enviar a mensagem
SmtpFailedRecipientException Representa a exceção quando o servidor não consegue enviar para um determinado destinatário
SmtpFailedRecipientsException Exceção de infra-estrutura, quando um e-mail é enviado e não consegue chegar a todos os destinatários.
SmtpPermission Controle de acesso do SMTP
SmtpPermissionAttribute Atributos do controle de acesso do SMTP
Delegate
SendCompletedEventHandler Representa o método que trata o evento de envio do e-mail
Enumerações
DeliveryNotificationOptions Descreve as opções de envio para o e-mail
MailPriority Especifica a prioridade da mensagem
SmtpAccess Especifica o nível de acesso permitido do SMTP
SmtpDeliveryMethod Especifica como as mensagens do e-mail serão entregues
SmtpStatusCode Especifica o resultado do envio de e-mail usando a classe SmtpClient.
Tabela 1. Conhecendo o System.Net.Mail

Criando uma classe de envio de e-mail

Na Listagem 1 vamos criar uma classe de envio de e-mails utilizando o System.Net.Mail. O ASP.NET permite que você configure o envio de e-mail diretamente no arquivo de configuração web.config. Gostaria, porém, de ir um pouco mais fundo no código e criar uma classe que seja independente do web.config e que dê mais flexibilidade ao seu desenvolvimento, possibilitando por exemplo que você possa atribuir valores através de uma fonte de dados.

Para começar, abra o Visual Studio, e crie um novo projeto Web, selecionando File à New Web Site (Arquivo à Novo Web Site), conforme Figura 1. Uma nova janela aparecerá perguntando o local que deseja salvar o projeto. Indique o tipo de projeto como ASP.NET Web Site, selecione a pasta de sua preferência, com a opção em File System e selecione a linguagem de sua preferência. Para este exemplo utilizaremos o VB.NET, conforme ...

Quer ler esse conteúdo completo? Tenha acesso completo