VB
.NET - Enviando emails para aniversariantes do dia
![]() |
Neste artigo vou mostrar como enviar emails para os aniversariantes do dia em uma aplicação Windows Forms usando a linguagem VB .NET. |
Este artigo é um artigo para iniciantes na linguagem VB .NET que mostrar como enviar emails com base em um critério de data definido na aplicação.
Os conceitos abordados no exemplo do artigo são :
Criar uma aplicação Windows Forms
Acessar um banco de dados SQL Server
Definir uma consulta Transact-SQL usando DATEPART
Enviar emails usando o servidor Gmail
Gerar um log de auditoria
O recurso mais importante desta aplicação é a consulta que vamos fazer para selecionar os aniversariantes com base no dia e mês atual .
Para isso vamos definir uma consulta SQL Server usando a função DATEPART cuja sintaxe é : DATEPART ( datepart , data ) Onde :
|
|
---|---|
qq |
|
mm |
|
dy |
|
dd |
|
wk |
|
hh | |
ss |
|
TZoffset | |
ISO_WEEK |
isowk |
No exemplo vamos acessar a tabela Contatos do banco de dados Cadastro.mdf cuja estrutura é vista a seguir:
![]() |
Então, ao trabalho...
Recursos Usados
Criando o projeto Windows Forms
Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Forms Application.
Informe um nome a seu gosto. Eu vou usar o nome Vbnet_EmailData;
Selecione o formulário Form1.vb e partir da ToolBox inclua os seguintes controles:
1 Panel - Dock = Bottom
1 DataGridView - Dock = Fill , dgvContatos
3 Buttons - btnExibir, btnEmail, btnEncerrar
Disponha os controles conforme o leiaute da figura abaixo:
A seguir declare os seguintes namespaces no formulário:
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Net.Mail
Imports System.IO
Depois inclua uma referência ao namespace System.Configuration no projeto via menu Project-> Add Reference.
Defina no arquivo App.Config a string de conexão com o banco de dados SQL Server:
..... <connectionStrings> <add name="conexaoContatos" connectionString="Data Source=.;Initial Catalog=Cadastro;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> ..... |
Na janela de propriedades do projeto vamos definir a consulta SQL e o local e nome do arquivo log que vamos gerar no sistema.
Agora vamos definir o código do formulário do projeto.
1- Exibindo dados da tabela Contatos no DataGridView
No evento Click do botão de comando - Enviar Email - inclua o código abaixo:
Private Sub btnExibir_Click(sender As Object, e As EventArgs) Handles btnExibir.Click
Dim connectionString As String =
ConfigurationManager.ConnectionStrings("ConexaoContatos").ConnectionString
Dim strSql As String = My.Settings.cmdSql
Dim dtb As New DataTable
Using cnn As New SqlConnection(connectionString)
Using dad As New SqlDataAdapter(strSql, cnn)
dad.Fill(dtb)
End Using
dgvContatos.DataSource = dtb
End Using
End Sub
|
2- Acessando os dados e selecionando os aniversariantes para enviar o email
No evento Click do botão de comando - Exibir Dados - inclua o código abaixo:
Private Sub btnEmail_Click(sender As Object, e As EventArgs) Handles btnEmail.Click Try Dim dt As New DataTable() Dim consulta As String = "SELECT Nome, Email FROM Contatos WHERE DATEPART(DAY, nascimento) = @Day AND DATEPART(MONTH, nascimento) = @Month" Dim constr As String = ConfigurationManager.ConnectionStrings("ConexaoContatos").ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand(consulta) cmd.Connection = con cmd.Parameters.AddWithValue("@Day", DateTime.Today.Day) cmd.Parameters.AddWithValue("@Month", DateTime.Today.Month) Using sda As New SqlDataAdapter(cmd) sda.Fill(dt) End Using End Using End Using
If dt.Rows.Count > 0 Then Dim nome As String = row("nome").ToString() GeraLog("Tentando enviar um email para: " & nome & " email: " & email) Using mm As New MailMessage("seu_email@gmail.com", email) Dim smtp As New SmtpClient() Dim credentials As New System.Net.NetworkCredential() smtp.UseDefaultCredentials = True GeraLog("Email enviado com sucesso para : " & nome & " email : " & email) Next |
O código do método GeraLog() é visto a seguir:
Private Sub GeraLog(texto As String)
Dim path As String = My.Settings.arqLog
Using writer As New StreamWriter(path, True)
writer.WriteLine(String.Format(texto, DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt")))
writer.Close()
End Using
End Sub
|
Pegue o
projeto completo aqui :
VBnet_EmailData.zip
O anjo do Senhor
acampa-se ao redor dos que o temem, e os livra.
Salmos 34:7
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET