O e-mail é o mais popular mecanismo de comunicação onde aplicações modernas devem estar preparadas para poder trabalhar com este tipo de recurso.
O .Net Framework possui um conjunto de bibliotecas que facilitam muito nosso trabalho quando precisamos enviar mensagens desde as mais simples até as mais elaboradas contendo arquivos, relatórios, etc.
Agora vou mostrar como é fácil montar uma aplicação de envio de e-mails utilizando as bibliotecas System.Net e System.Net.Mail.
O processo de criar e enviar um e-mail é o seguinte:
1. O primeiro passo é criar um objeto MailMessage que é o responsável por todos os atributos da mensagem que será enviada, como remetente, destinatário, cópias, anexos, assuntos, corpo, etc.
2. Para cada remetente, destinatário ou cópias podem ser criados objetos MailAddress ou simplesmente atribuir ao objeto MailMessage uma string contendo o e-mail diretamente.
3. Caso seja necessário anexar algum arquivo, este deverá ser atribuído ao objeto MailMessage através do método Attachments.Add.
4. Logo Após, criar o objeto SmtpClient que será responsável pela comunicação com o Servidor SMTP.
5. Se o servidor SMTP do remetente requer autenticação, deve-se criar as credenciais de acesso.
6. E por fim, basta passar o objeto MailMessage ao método Send do objeto SmtpClient.
Agora, vamos ver isso na prática
Criar o objeto MailMessage
MailMessage _mensagem = new MailMessage();
Atribuir o Remetente
_mensagem.From = new MailAddress("seuemail@dominio.com", "Nome Remetente");
Atribuir os destinatários
_mensagem.To.Add(new MailAddress("emaildestinatario@dominio.com"));
Pode atribuir também cópia e cópia oculta
_mensagem.CC.Add(new MailAddress("emaildestinatario@dominio.com")); _mensagem.Bcc.Add(new MailAddress("emaildestinatario@dominio.com"));
Atribuir o assunto ao e-mail
_mensagem.Subject = "E-mail de Teste";
Definir se o corpo da mensagem será HTML. O padrão é falso.
_mensagem.IsBodyHtml = true;
Definir o corpo da mensagem
_mensagem.Body = "E-mail Teste";
Se houver anexos, pode atribuir também
_mensagem.Attachments.Add(new Attachment(@"C:\Boot.ini"));
Criar o objeto SmtpClient e atribuir as credenciais do remetente
SmtpClient _cliente = new SmtpClient("smtp.gmail.com"); _cliente.Credentials = new NetworkCredential("sua conta", "sua senha");
Habilitar criptografia HTTP utilizando SSL (Verificar se é requerido pelo provedor)
_cliente.EnableSsl = true;
E finalmente envia a mensagem
_cliente.Send(_mensagem);
O envio do e-mail é um processo que leva alguns segundos e dependendo do tamanho do anexo esse tempo aumenta. Dependendo da aplicação este tempo de espera pode comprometer o resultado. Para estes casos, a classe SmtpClient disponibiliza um método assíncrono para envio do e-mail.
Para esta implementação, a primeira coisa que deve ser feita é um tratamento para o evento SmtpClient.SendCompleted. Para poder responder a este evento basta implementar o método estabelecido no delegate. Este método só será chamado ao final do envio, liberando todos os recursos da aplicação enquanto executa a tarefa.
_cliente.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted); void sc_SendCompleted(object sender, AsyncCompletedEventArgs e) { if (e.Cancelled) Console.WriteLine("Mensagem cancelada"); else if (e.Error != null) Console.WriteLine("Erro: " + e.Error.ToString()); else Console.WriteLine("Mensagem enviada"); }
Agora basta finalizar o envio
_cliente.SendAsync(_mensagem, null);
Basicamente a diferença entre o envio síncrono e assíncrono é que no síncrono durante a execução da tarefa o sistema prende os recursos até que termine o envio, no assíncrono ele faz a solicitação, libera os recursos para continuar trabalhando e quando a tarefa terminar o sistema ativa o evento SendCompleted dando a opção de notificação para o usuário.
É realmente muito fácil trabalhar com envio de e-mails no .Net. Abaixo o Link para Download do Exemplo utilizado para facilitar a compreensão.
Download do Exemplo
Nenhum comentário:
Postar um comentário