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. |
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 ...