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:
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 é:
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... :-)