Enviando e-mails com C#
Muitas vezes nós precisamos enviar e-mails com C#, é uma tarefa simples e básica, as vezes precisamos até enviar anexos neste e-mail.
Então para deixar um exemplo prático e simples de se utilizar, vou criar este projeto abaixo que foi usado numa aula do Curso de Desenvolvimento de Software na Etec de Itu.
Para envio de e-mails, o C# dispõe de uma classe SmtpClient que vem da biblioteca nativa System.Net.Mail (mais informações em: SmtpClient Classe (System.Net.Mail) | Microsoft Docs).
Então vamos criar um projeto .Net do tipo Console apenas para fins didáticos onde iremos montar a estrutura para testar o envio de e-mails.
Para podermos realizar a leitura de arquivo de configurações em JSON e mapear suas propriedades para uma classe, tivemos que importar todos estes pacotes.
Para ajudar no futuro à reutilizar o código, fizemos um arquivo “appsettings.json” contendo as configurações de envio de e-mails, onde ao preenchê-lo você seta as configurações necessárias.
Faremos uso de uma classe para carregar estas configurações e enviá-las ao nosso método de envio de e-mails.
Como nossa aplicação é do tipo console, iremos obter as configurações no nosso “program.cs”
Para os anexos, temos que preparar algo diferente:
- Crie a pasta “Files”
- Copie arquivos para ela com as imagens que quer anexar no e-mail
- Configure para que a aplicação ao compilar e montar o diretório de testes, envie uma cópia dos arquivos para lá.
Assim poderemos utilizar um método que obtém na pasta todos os arquivos que estão ali para nós anexarmos no e-mail.
Observação: Numa aplicação normal, basta você fornecer a lista de arquivos, isto foi feito apenas para que possamos carregar automaticamente no nosso teste.
Já aqui como é uma aplicação de Teste, optei por buscar todos arquivos na pasta “Files” e enviá-los como anexos.
Abaixo temos o código do “program.cs” da aplicação.
E finalmente vamos para o método de envio de e-mails, procurei fazer da forma mais amigável possível para entendimento das funcionalidades.
Para isto criei uma classe “Util.cs” que contém os métodos necessários para o envio, sendo o método “EnviaMensagem” responsável por realizar todo o processo de envio.
Além disso, métodos auxiliares foram criados para adicionar destinatários no objeto de e-mail, simplificando assim as tarefas.
Foi criado um método “AddAttachment” que faz o trabalho de inserção na mensagem dos anexos.
E assim pudemos enviar e-mails de forma simples e prática.
Lembrando-se que se for utilizar uma conta do Google ou outro provedor será necessário liberar as políticas de acesso externo / segurança conforme cada provedor, nas suas configurações.