VB .NET - Enviando E-mails
Recebi alguns consultas recentemente sobre
como enviar e-mails no VB 2005. A resposta é bem simples :
Basta você referenciar o namespace System.Net.Mail, criar um formulário , definir as variáveis da classe e pronto. |
Você pode seguir os mesmos procedimentos indicados no artigo : ASP.NET 2.0 - Enviando Email
Então se você quer enviar e-mails no VB .NET atente para os seguintes detalhes:
O namespace System.Net.Mail é o novo recurso para enviar e-mail . Na versão 1.1 usávamos o namespace System.Web.Mail.SmtpMail que é agora obsoleto.
A primeira coisa que você vai notar é que o namespace mudou de System.Web.Mail para System.Net.Mail. e que agora para conseguir a mesma funcionalidade existem duas novas classes :
Para usar você deverá criar uma instância para o objeto :
Dim Mensagem as MailMessage = new MailMessage()
Dim Email As New SmtpClient("macoratti@yahoo.com")
Efetuando uma comparação entre os métodos usados temos as seguintes diferenças entre a versão 2.0 e versão 1.1:
Para enviar um e-mail em uma aplicação VB.NET siga o roteiro:
As demais classes do namespace System.Net.Mail permitem um tratamento mais avançado para a funcionalidade de enviar e-mail. Existem classes que podem ser usadas para incluir anexos a um e-mail, para embutir objetos , para especificar a informação de autenticação do servidor SMTP e classes para tratamento de erros específicos SMTP.
Enviando Emails
Crie um novo projeto do windows application no Visual Basic 2005 Express Edition com o nome enviaEmail.
Defina no formulário form1.vb o leiaute conforme a figura abaixo:
Inclua a partir da ToolBox um componente OpenFileDialog e altere o seu nome para OFD: (ele irá aparecer na bandeja do formulário)
Declare no início do formulário o seguinte namespace: Imports System.Net.mail
A seguir defina os seguintes objetos que serão usados para criar e enviar o email:
'usado para armazenar os anexos'cria uma mensagem a
enviar
Dim Mailmsg
As
New
System.Net.Mail.MailMessage()
Vamos agora ao código usado no projeto:
Temos um controle ListBox - lstAnexos , que permite selecionar arquivos que serão enviados como anexos ao email.
A seguir temos o código dos botões : Incluir Anexo e Excluir Anexo que usa o OpenFileDialog para permitir a seleção de arquivos:
Private
Sub
btnIncluiAnexo_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
btnIncluiAnexo.Click
OFD.Title = "Selecione um arquivo para anexar"OFD.ShowDialog() For Conta = 0 To UBound(OFD.FileNames) lstAnexos.Items.Add(OFD.FileNames(Conta)) Next End SubPrivate Sub btnRemoveAnexo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveAnexo.Click 'Remove os anexos If lstAnexos.SelectedIndex > -1 Then lstAnexos.Items.RemoveAt(lstAnexos.SelectedIndex) End If End Sub |
A seguir o código do botão Enviar Email que faz uma validação dos dados e envia o email:
Private Sub btnEnvia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnvia.Click
'validação dos dados If txtServidorSMTP.Text = "" Then MsgBox( "Informe o nome do servidor SMTP ...!!!", MsgBoxStyle.Information, "Envia Email")Exit Sub End If If txtOrigem.Text = "" Then MsgBox( "Informe o endereço de Origem ...!!!", MsgBoxStyle.Information, "Envia Email")Exit Sub End If If txtDestino.Text = "" Then MsgBox( "Informe o endereço de destino ...!!!", MsgBoxStyle.Information, "Envia Email")Exit Sub End If If txtAssunto.Text = "" Then MsgBox( "Informe o assunto do email ...!!!", MsgBoxStyle.Information, "Envia Email")Exit Sub End If 'endereca o recipiente Mailmsg.To.Add( New MailAddress(txtDestino.Text))Dim mSmtpCliente As New SmtpClient(txtServidorSMTP.Text) 'Especifica o formato If chkFormato.Checked = True Then Mailmsg.IsBodyHtml = True End If'define o assunto Mailmsg.Subject = txtAssunto.Text 'Anexa os arquivos um por um For i = 0 To lstAnexos.Items.Count - 1 Mailmsg.Attachments.Add( New Attachment(lstAnexos.Items(i))) Next'Corpo do EMail Mailmsg.Body = txtMensagem.Text 'ENvia o email mSmtpCliente.Send(Mailmsg) End Sub |
Pronto com isso você já pode enviar emails no VB 2005.
Usando uma classe para enviar Emails
Uma outra alternativa ao código acima seria criar uma classe chamada Email.vb cujo código é dado a seguir:
Imports System.Net.mailPublic Class Email' </summary> ' <param name="from">Endereco do Remetente</param> ' <param name="recepient">Destinatario</param> ' <param name="bcc">recipiente Bcc</param> ' <param name="cc">recipiente Cc</param> ' <param name="subject">Assunto do email</param> '<param name="body">Corpo da mensagem de email</param> Public Shared Sub enviaMensagemEmail(ByVal from As String, ByVal recepient As String, ByVal bcc As String, _ ByVal cc As String, ByVal subject As String, ByVal body As String, ByVal servidorSMTP As String) ' cria uma instância do objeto MailMessage Dim mMailMessage As New MailMessage() ' Define o endereço do remetente mMailMessage.From = New MailAddress(from)' Define o destinario da mensagem mMailMessage.To.Add( New MailAddress(recepient))' Verifica se o valor para bcc é null ou uma string vazia If Not bcc Is Nothing And bcc <> String.Empty Then ' Define o endereço bcc mMailMessage.Bcc.Add( New MailAddress(bcc)) End If' verifica se o valor para cc é nulo ou uma string vazia If Not cc Is Nothing And cc <> String.Empty Then ' Define o endereço cc mMailMessage.CC.Add( New MailAddress(cc)) End If' Define o assunto mMailMessage.Subject = subject ' Define o corpo da mensagemmMailMessage.Body = body ' Define o formato do email como HTMLmMailMessage.IsBodyHtml = True ' Define a prioridade da mensagem como normalmMailMessage.Priority = MailPriority.Normal ' Cria uma instância de SmtpClient - Nota - Define qual o host a ser usado para envio ' de mensagens, no local de smtp.server.com use o nome do SEU servidor Dim mSmtpClient As New SmtpClient(servidorSMTP) ' Envia o email mSmtpClient.Send(mMailMessage) End Sub
|
Uma das formas de usar a classe é dada no código abaixo:
Private Sub
Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click If (txtOrigem.Text = String.Empty) Or (txtDestino.Text = String.Empty) Or (txtAssunto.Text = String.Empty) Or (txtServidorSMTP.Text = String.Empty) Then MsgBox( "Valores para compor o email são inválidos, verifique preenchimento...") ElseEmail.enviaMensagemEmail(txtOrigem.Text, txtDestino.Text, txtBcc.Text, txtCC.Text, txtAssunto.Text, txtMensagem.Text, txtServidorSMTP.Text) End If End Sub |
E , é só isso....
Pegue o projeto completo aqui : enviaEmail.zip
Aguardo você no próximo artigo VB.NET...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#