Visual Basic 6 - Enviando anexos com o Outlook Express


Se você possui o OutLook Express instalado pode usar o Visual Basic 6 para enviar emails com anexos usando o Outlook. Acompanhe...

Inicie um novo projeto no VB6  e no formulário padrão insira dois TextBox , dois CommandButton e um controle CommonDialog conforme o layout abaixo:

A seguir no formulário inclua o código abaixo onde definimos as funções das APIs que vamos usar:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Agora no evento click do botão cmdAnexo digite o código abaixo. Ele apenas abre a janela de diálogo Open File do commondialog e exibe o nome do arquivo anexo que você deseja enviar na caixa de texto.

Private Sub cmdanexo_Click()

On Error Resume Next 'define o tratamento de erros

cmdlgAnexo.CancelError = True

cmdlgAnexo.ShowOpen

If Err.Number = cdlCancel Then
   MsgBox "Você não selecionou nenhum arquivo para anexar a mensagem ! "
   Err.Clear
Else
    txtanexo.Text = cmdlgAnexo.FileName
End If

On Error GoTo 0 ' desabilita tratamento de erros

End Sub

No evento click do botão - Anexar arquivos via Outlook  Express - o código abaixo chama o Outlook via comando Shell

Private Sub Command1_Click()

Dim arq_anexo As String
Dim assunto As String
Dim Ret As Long

assunto = txtassunto.Text
arq_anexo = txtanexo.Text

'inicia o outlook
ShellExecute Me.hWnd, "Open", "mailto:macoratti@ig.com.br?subject=" & arq_anexo & "&body=" & assunto, _
vbNullString, vbNullString, vbNormalFocus

' espera ate que o Outlook Express esteja pronto
While Ret = 0
   DoEvents
   Ret = FindWindow(vbNullString, arq_anexo)
Wend

' envia comandos Alt-I-A,o nome do arquivo,
' dois TABs, e Enter.
SendKeys "%ia" & arq_anexo & "{TAB}{TAB}{ENTER}"

End Sub

Agora execute o projeto , selecione o arquivo e clique no botão que vai abrir o Outlook conforme mostrado abaixo.

Você pode usar  a função InternetGetConnectedState abaixo para verificar se você esta conectado.

Esta função retorna 1 se a conexão existe e zero se não existir conexão. Os parâmetros dwflags irão indicar o tipo de conexão.

No formulário declare a função e as variáveis conforme abaixo:

Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef dwflags As Long, _
ByVal dwReserved As Long) As Long

Private Const CONNECT_LAN As Long = &H2
Private Const CONNECT_MODEM As Long = &H1
Private Const CONNECT_PROXY As Long = &H4
Private Const CONNECT_OFFLINE As Long = &H20
Private Const CONNECT_CONFIGURED As Long = &H40
 

Public Function IsWebConnected(Optional ByRef ConnType As String) As Boolean
Dim dwflags As Long
Dim WebTest As Boolean
ConnType = ""
WebTest = InternetGetConnectedState(dwflags, 0&)
Select Case WebTest
Case dwflags And CONNECT_LAN: ConnType = "LAN"
Case dwflags And CONNECT_MODEM: ConnType = "Modem"
Case dwflags And CONNECT_PROXY: ConnType = "Proxy"
Case dwflags And CONNECT_OFFLINE: ConnType = "Offline"
Case dwflags And CONNECT_CONFIGURED: ConnType = "Configured"
Case dwflags And CONNECT_RAS: ConnType = "Remote"
End Select
IsWebConnected = WebTest
End Function

Ainda no formulário defina a função IsWebConnected

Public Function IsWebConnected(Optional ByRef ConnType As String) As Boolean

Dim dwflags As Long
Dim WebTest As Boolean

ConnType = ""
WebTest = InternetGetConnectedState(dwflags, 0&)

Select Case WebTest
  Case dwflags And CONNECT_LAN: ConnType = "LAN"
  Case dwflags And CONNECT_MODEM: ConnType = "Modem"
  Case dwflags And CONNECT_PROXY: ConnType = "Proxy"
  Case dwflags And CONNECT_OFFLINE: ConnType = "Offline"
  Case dwflags And CONNECT_CONFIGURED: ConnType = "Configured"
  Case dwflags And CONNECT_RAS: ConnType = "Remote"
End Select

IsWebConnected = WebTest
End Function

Para chamar a função você pode colocar o código abaixo no evento Load do formulário

Dim msg As String

If IsWebConnected(msg) Then
   msg = "Voce esta conectado a internet via: " & msg
Else
   msg = "Voce não esta conectado a internet."
End If

MsgBox msg, vbOKOnly, "Internet"
 

Até o próximo artigo...
 

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:


José Carlos Macoratti