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