sábado, 21 de abril de 2012

Como criar uma aplicação para enviar e-mail utilizando .NET

Atualmente diversos aplicativos necessitam de um serviço para envio de e-mail.
Podemos criar uma aplicação de exemplo utilizando as classes abaixo:

Classe: MailAddress
Namespace: System.Net.Mail.MailAddress

Ela representa um endereço de e-mail qualquer, seja do remetente ou destinatário. Esta classe será utilizada pela classe "MailMessage" para armazenar os endereços, de origem e destino, da mensagem.

Além do endereço de e-mail , esta classe também pode armazenar um "nome" para  ser exibido ao lado do endereço de e-mail quando a mesnagem for visualizada. O nome desta propriedade é "DisplayName"

Classe: MailMessage
Namespace: System.Net.Mail.MailMessage
Repesenta uma mensagem de e-mail que pode ser enviada através da classe "SmtpClient"

O remetente, destinatário, assunto e corpo de uma mensagem de e-mail podem ser especificados como parâmetros quando um objeto MailMessage é inicializado. Estes parâmetros também podem ser definidos ou acessados ​​usando as propriedades no objeto MailMessage.

Classe: SmtpClient
Namespace: System.Net.Mail.SmtpClient

Esta classe permite que aplicações possam enviar e-mail utilizando o protocolo SMTP.


Para enviar uma mensagem de e-mail utilizando a classe SmtpClient você deve especificar as seguintes propriedades:

* Host
O servidor host de SMTP que será utilizado para enviar o e-mail, no exemplo irei utilizar o gmail.

* Credentials
 Credenciais para
autenticação, se exigido pelo servidor SMTP, no meu exemplo será necessário.

* EnableSsl
Informar se o servidor de SMTP utiliza SSL para encriptar a conexão.


* UseDefaultCredentials
No meu caso irei passar "false", pois vou passar as minhas credenciais através da propriedade "Credentials" descrita acima.

Veja abaixo uma vídeo-aula contendo um exemplo prático:



Veja abaixo um código de exemplo. Para este código funcionar é preciso adicionar 2 namespaces:

using System.Net;
using System.Net.Mail;

private void enviarEmail()
{
     MailAddress remetente = new MailAddress(emailorigem@gmail.com, "Nome da Origem"); 
     MailAddress destino     = new MailAddress(emaildestino@gmail.com, "Nome do Destino");

     MailMessage msg = new MailMessage(remetente, destino);
     msg.Subject          = "Assunto da mensagem";
     msg.Body             = "Corpo da mensagem";

     SmtpClient smtp                   = new SmtpClient();
     smtp.Host                              = "smtp.gmail.com";
     smtp.Port                              = "587";
     smtp.EnableSsl                     = true;
     smtp.UseDefaultCredentials = false;

     smtp.Credentials = new NetworkCredential(remetente.Address, "Senha do emailorigem");
     smtp.Send(msg);
}

Trabalhando com imagem em banco de dados utilizando .NET

Em .NET é possível salvar e recuperar imagens em banco de dados de froma simples, utilizando algumas classes do framework. Seguem abaixo as classes necessárias para criarmos um exemplo:

Classe: Image
Namespace: System.Drawing.Bitmap  
É uma "classe abstrata" que fornece funcionalidades para as classes "Bitmap" e "Metafile"

Classe: Bitmap
Namespace: System.Drawing.Bitmap 
É uma classe utilizada para trabalhar com imagens, ela herda da classe abstrata "Image"

Um bitmap é um formato padrão utilizado pelo windows para "armazenar imagem". Geralmente eles não são compactados, portanto não são indicados para transferência através da internet, Ele consiste, basicamente, em dados de pixel de uma imagem. 

Podemos salvar um bitmap em arquivo em alguns formatos padrões como: BMP, GIF, EXIF, JPG, PNG e TIFF. Para obter mais informações sobre os formatos suportados, consulte Tipos de Bitmaps.

Classe: MemoryStream
Namespace: System.IO.MemoryStream
Classe utilizada para se trabalhar com "stream" em memória

Neste exemplo ela será utilizada para gerar um array de bytes, byte[], que será gravado no nosso banco de dados. O tipo do campo na tabela deverá ser "varbinary[MAX]"
 

OBSERVAÇÃO: Em algumas situações os analistas e desenvolvedores não gravam a imagem no banco de dados e optam por gravar os arquivos físicos das imagens no disco rígido, gravando no banco de dados apenas o "path" da imagem. Se você gravar somente o caminho da imagem em uma tabela do banco de dados, economizará, principalmente, espaço no seu banco de dados


Veja na video-aula abaixo como INSERIR uma imagem em banco de dados:




 

Veja na video-aula abaixo como RECUPERAR uma imagem gravada em um banco de dados e exibí-la em uma aplicação .NET: