Conectando-se a WEB e enviando e-mails com o Visual Basic


Uma coisa que fascina no Visual Basic é a facilidade para criarmos aplicações complexas com pouco código. Basta pegar um controle ActiveX aqui outro componente ali e pronto ! , temos um sistema completo e funcionando. Exageros á parte vamos mostrar como criar um navegador , um browser, para você navegar na web e como poder enviar e-mails usando o VB. Complicado ??? Aguarde , acompanhe e comprove !

1-) O Projeto - Navegando na Web com o VB - Criando o seu proprio Browser

O aspecto do nosso projeto será o da figura 1.0 . Na figura 2.0 temos os componentes que precisam ser referenciados no seu projeto.

Figura 1.0 - Aplicação em tempo de projeto Figura 2.0 - Componentes referenciados no projeto

Antes de iniciarmos o nosso projeto vamos nos ater no controle WeBrowser. Com este controle podemos adicionar recursos de navegação , visualização de arquivos e diversas funcionalidades usadas na Web em nossas aplicações VB.

A seguir veremos as principais propriedades do controle WebBrowser:

Os principais métodos do controle WebBrowser são:

Os eventos permitem controlar a navegação na web. Os principais eventos do controle WebBrowser são:

Criando o seu próprio Navegador para Internet

Vamos mostrar como criar o seu próprio Navegador para internet usando o WebBrowser:

Criando o Menu

1-) Inicie um novo projeto no Visual Basic e no formulário padrão altera a propriedade Name para frmMain e deixe a propriedade Caption vazia.

2-) Ative o Menu Editor , pressionando Ctrl+E ou clicando no seu ícone ; na propriedade Caption informe o nome do menu que irá aparecer - &Encerrar - e na propriedade Name informe o prefixo mnu seguido do nome informado - mnusair. Clique no botão Next e a seguir informe em Caption - &Sobre e em Name - mnusobre. Ao final deveremos ter algo parecido com o seguinte:

Menu Editor O menu criado

Na opção Encerrar do menu insira o código :

Private Sub mnuencerrar_Click()
   Unload Me
End Sub

Na opção do menu Sobre insira o código

Private Sub mnusobre_Click()
  frmAbout.Show vbModal
End Sub

Criando a barra de ferramentas

Vamos criar a barra de ferramentas:

Insira um objeto ToolBar e um controle ImageList ( Para inserí-los na caixa de ferramentas do seu projeto clique no menu Project -> Components e selecione o componente Windows Common Controls 6.0 ). Voce devera carregar a MSCOMCTL.OCX

Vamos inserir as imagens usadas na ToolBar no controle ImageList: Selecione o controle ImageList e clique com o botão direito do mouse sobre o controle selecionando a seguir a opção Properties e em seguida na opção InsertPicture inserindo cada imagem como mostado na figura abaixo: As imagens irão corresponder as opções: Voltar, Avançar , Parar , Atualizar , Pesquisar eHome .

O objeto ImageList com as imagens

Clique agora , com o botão direito do mouse , no objeto ToolBar e selecione a opção Properties. A seguir na guia General na opção ImageList selecione o nome do objeto ImageList que você acabou de usar - ImageList1 . Clique na guia Buttons e a seguir clique no botão Insert Button e faça o seguinte: na opção Key informe Voltar, em ToolTip Text informe : Voltar página e em Image informe 1 ( a primeira imagem) clique em Aplicar e repita o procedimento para cada imagem que você inseriu , incrementando o numero da opção Image. Veja a figura a seguir :

O objeto ToolBar - inserindo os botões para as imagens

Insira agora uma combobox no formulário com as seguintes propriedades: Name = Cboendereço , Text="" . Inclua também uma Label com e informe na propriedade Caption - Endereço.

Agora insira o controle WebBrowser (Insira na barra de ferramentas do seu projeto o componente Microsoft Internet Control ) no formulário.

Para encerrar insira um controle Timer com sua propriedade Interval sendo igual a 5. A Aparência do formulário do projeto é dada a seguir;

O projeto em tempo de desenho

A interface do browser já esta pronta , basta agora inserirmos o código que dará vida ao nosso projeto.

Incluindo o Código no projeto

Vamos agora inserir o código no projeto para fazê-lo funcionar.

1-) Código da seção General Declarations

Public enderecopadrao As String
Dim NaoNevagarAgora As Boolean

2-) Código do evento Load do formulário frmMain:

Private Sub Form_Load()

On Error Resume Next

  Me.WindowState = 2

  Me.endereco = "http://geocities.com/macoratti"

  Combo1.Text = endereco
  Combo1.AddItem (Combo1.Text)
 
  Timer1.Enabled = True
 
  WebBrowser1.Navigate endereco

End Sub

3-) Código do evento DownloadComplete do objeto WebBrowser1:

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)

  On Error Resume Next

  Me.Caption = WebBrowser1.LocationName

End Sub

4-) Código do evento NavigateComplete do objeto WebBrowser1

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)

  Dim i As Integer
  Dim ok As Boolean
  
  Me.Caption = WebBrowser1.LocationName

  For i = 0 To Combo1.ListCount - 1
     If Combo1.List(i) = WebBrowser1.LocationURL Then
        ok = True
        Exit For
     End If
  Next i
  
  naonavegar = True
  
  If ok Then
     Combo1.RemoveItem i
  End If
  
  Combo1.AddItem WebBrowser1.LocationURL, 0
  Combo1.ListIndex = 0
  
  naonavegar = False
  
End Sub

5-) Código do evento click da combobox combo1:

Private Sub Combo1_Click()
   
   If naonavegar Then Exit Sub
   
   Timer1.Enabled = True
   WebBrowser1.Navigate Combo1.Text
   
End Sub

6-) Código do evento Keypress da combobox combo1:

Private Sub Combo1_KeyPress(KeyAscii As Integer)
  
  On Error Resume Next
  
  If KeyAscii = vbKeyReturn Then
    Combo1_Click
  End If
  
End Sub

7-) Código do evento Click do objeto ToolBar1:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

On Error Resume Next

Timer1.Enabled = True

Select Case Button.Key
  Case "Voltar"
     WebBrowser1.GoBack
  Case "Avancar"
     WebBrowser1.GoForward
  Case "Parar"
     Timer1.Enabled = False
     WebBrowser1.Stop
     Me.Caption = WebBrowser1.LocationName
  Case "Atualizar"
     WebBrowser1.Refresh
  Case "Pesquisar"
     WebBrowser1.GoSearch
  Case "Home"
     WebBrowser1.GoHome
  End Select

End Sub

8-) Código do evento Timer do objeto Timer1;

Private Sub Timer1_Timer()
   If WebBrowser1.Busy = False Then
      Timer1.Enabled = False
      Me.Caption = WebBrowser1.LocationName
   Else
      Me.Caption = "Abrindo a página ..."
   End If
End Sub

Pronto , agora basta executar e navegar. Abaixo o programa em execução;

Vamos incrementar o projeto com uma tela de Apresentação (Splash) e um formulário Sobre(com informações sobre o sistema) e um formulário de login.( a senha é password):

frmlogin - Formulário de Login ( A senha é password) frmabout - Formulário Sobre
frmsplash - Tela de apresentação

O código do projeto referente a estes formulários eu não irei colocar aqui, mas voce pode examiná-los , pegue o projeto aqui : jcmbrw.zip ( 17 Kb )

Eviando um correio eletrônico com o VB

Existem diversas formas de enviar um e-mail usando um projeto VB . Podemos usar componentes de terceiros , o Outlook ou o seu programa de e-mails e , é claro , podemos também usar os controles do VB para fazer o serviço.

O Visual Basic fornece dois controles que nos permitem receber e enviar correio eletrônico. Vamos apresentá-los:

1-) Controle MAPISession

Este controle permite estabelecer uma sessão de MAPI ( uma interface para enviar e receber mensagens) cujos métodos e propriedades principais são:

UserName - Informa o nome do usuário que irá enviar/receber as mensagens

Password - Armazena a senha do usuário para conexão ao serviço de correio eletrônico.

SignOn - Inicia uma sessão usando a conta de e-mail do usuário ( usa a senha em Password )

Session ID - É definida quando especificamos o método SignOn e retorna o atributo da sessão atual.O valor padrão é 0 .

1-) Controle MAPIMessages

Após realizar a sessão MAPI via objeto MAPISession , o controle MAPIMessages permite realizar várias operações entre as quais citamos:

As principais propriedades e métodos do controle MAPIMessages são:

SessionID - Armazena a sessão da conexão atual

Compose - Permite compor uma nova mensagem.

RecipDisplayName - Permite especificar o nome do recipiente do subject ( O objeto que vai armazenar o cabeçalho da mensagem)

RecipAddress - Informa o endereço de e-mail. Ex: macoratti@riopreto.com.br

Reply - Copia a mensagem atual para o buffer da nova mensagem e inclui o prefixo RE:

MsgSubject - Permite informar o texto que será exibido no cabeçalho da mensagem.

Send - Envia a mensagem

SignOff - Finaliza a sessão iniciada com SignOn

MsgNoteText - Permite informa o texto que será enviado como corpo da mensagem.

Criando o programa para enviar e-mail

Bem , agora vamos colocar na prática a teoria vista acima.

- Inicia um novo projeto no Visual Basic e altera a propriedade Name do form padrão para frmEmail.

-Referêncie em seu projeto o controle MSMAPI32.OCX - Microsoft MAPI Controls 6.0 - Clicando na opção Project do menu do VB e selecionando a opção Components.

-Insira no formulário os seguintes obejtos:

  1. 4 objetos Labels (etiquetas- Veja o nome usada em cada uma no projeto abaixo)
  2. 5 Objetos TextBox (Caixas de texto)
  3. Dois objetos CommandButton (botões de Comandos)
  4. Um objeto MAPISession e um objeto MAPIMessages

Defina as propriedades Caption e Name como exibida na aparências no projeto abaixo:

su Interface do Projeto feito em VB para enviar e-mails.

 

-5 caixa de textos 

-2 botões de comando : command1 e command2

-A seguir apague o contéudo da propriedade Text de cada TextBox (caixas de texto) e para a TextBox - Text5 - defina a propriedade Multiline como True e ScrollBars como Boths. O nome dado para cada caixa de texto é:

  1. txtpara
  2. txtsubject
  3. txtusuario
  4. txtsenha
  5. txtmensagem

Inserindo o código do projeto

Insira o seguinte código no evento click do botão Enviar:

Private Sub Command1_Click()

On Error GoTo trata_erro

MAPISession1.UserName = txtusuario.Text
MAPISession1.Password = txtsenha.Text
MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.Compose

MAPIMessages1.RecipDisplayName = txtsubject.Text
MAPIMessages1.RecipAddress = txtpara.Text

MAPIMessages1.AddressResolveUI = False
MAPIMessages1.MsgSubject = txtsubject.Text
MAPIMessages1.MsgNoteText = txtmensagem.Text

MAPIMessages1.Send False

MAPISession1.SignOff

Exit Sub

trata_erro:
MsgBox "Erro " & Format$(Err.Number) & " ao enviar o e-mail" & vbCrLf & Err.Description

End Sub

 No evento click do botão Sair  insira o seguinte código:

Private Sub Command2_Click()
    End
End Sub

Ao executar o projeto e , após fornecer os dados necessários clicar no botão enviar , deverá obter o  processamento conforme a seguinte tela:

Pronto !!! o seu programa já esta apto a enviar e-mails .... Gostou ???  Até a próxima... :-)