Hoje vamos mostrar como ler e enviar e-mails usando o Visual Basic 6.
O VB6 possui o controle MAPI ( Mail Application Programming Interface ) permite ler , enviar e anexar arquivos a e-mails em uma aplicação VB. Você vai ter que ter este controle instalado , ele esta presente no arquivo MSMAPI32.OCX - Microsoft MAPI Controls.
A utilização dos Controles MAPI envolve duas etapas :
Para fazer isto você vai usar dois controles : MAPISession - e MAPIMessage. .
Controle MAPISession
1- A primeira coisa a fazer é uma conexão com o seu servidor de email usando o seu código de identificação e sua senha. Podemos fazer isto de duas maneiras: Deixando que o próprio controle solicite as informações ou definindo-as via código.
Para abrir uma conexão usamos o método SignOn do controle MAPISession:
MAPISession.UserName = "SeuNome" MAPISession.Password = "SeuSenha" MAPISession.SignOn |
Controle MAPIMessages
Depois de efetuar a conexão com o servidor de mensagens a propriedade SessionID irá conter o identificador da sessão MAPI. Este identificador precisa ser passado para o controle MAPIMessages para que possamos usá-lo. Vejamos algo funcional:
Private Sub Form_Load() MAPISession.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Fetch Msgbox " Você tem " & MAPIMessages1.MsgCount & " Mensagens..." MAPISession1.SignOff End Sub |
Na linha : MAPIMessages.SessionID = MAPISession1.SessionID - o identificador da sessão SessionID precisa ser passado do controle MAPISession para o controle MAPIMessage antes de usá-lo.
Este código exibe um aviso informando quantas mensagens você possui na sua caixa de mensagens ; usamos aqui a propriedade MsgCount do controle MAPIMessages.
Obs:Para contar somente as mensagens não lidas use a propriedade FetchUnreadOnly definida como True :
MAPIMessage1.FetchUnreadOnly [ = value ]
Vamos continuar : No exemplo abaixo temo um projeto que usa uma caixa de listagem - List1 - para exibir uma lista de todas as mensagens que você tem na caixa de entrada exibindo o remetente e o assunto da mesma,veja o código abaixo:
Private Sub Form_Load() Dim i As Long MAPISession1.DownLoadMail = True MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Fetch If MAPIMessages1.MsgCount > 0 Then For i = 0 To MAPIMessages1.MsgCount - 1 MAPIMessages1.MsgIndex = i List1.AddItem "De: " & MAPIMessages1.MsgOrigDisplayName & " Assunto: " & MAPIMessages1.MsgSubject Next End If MAPISession1.SignOff End Sub |
Como funciona :
- A propriedade DownloadMail - que determina quando novas mensagens serão baixadas do servidor para o usuário - esta definida como True , assim todas as novas mensagens são forçadas a ir para caixa de entrada do usuário.
- Iniciamos uma nova sessão - SignOn
- O método Fetch cria um conjunto de mensagens de todas as mensagens selecionadas na caixa de entrada. Aqui podemos usar as propriedades : FetchMsgType para indicar o tipo de mensagem ; FetchSorted - para ordernar as mensagens e FetchUnreadOnly para definir se somente as mensagens não lidas comporão o conjunto.
- A quantidade de mensagens é obtida com a propriedade MsgCount
- O número do índice de cada mensagem é obtida com a propriedade MsgIndex
- As mensagens são incluídas no ListBox sendo exibidas :
1-) o Remetente - MAPIMessages1.MsgOrigDisplayName
2-) o Assunto da mensagem - MAPIMessages1.MsgSubject
Criando e enviando um Email
Criar e enviar um email usando MAPI é muito simples : Veja abaixo o código :
MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Compose MAPIMessages1.Send True MAPIMessages1.SignOff |
Aqui método Compose cria a mensagem a seguir o método Send envia a mensagem. Aqui estará sendo usado o seu programa de Email instalado e você não vai ter muito controle sobre o processo. Vejamos a seguir como você pode definir vários parâmetros e assim controlar melhor sua aplicação.
Agora inclua o código abaixo associado ao botão Enviar Email :
Private Sub Command1_Click() MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Compose MAPIMessages1.RecipAddress = Text1.Text MAPIMessages1.MsgSubject = Text2.Text MAPIMessages1.MsgNoteText = Text3.Text MAPIMessages1.Send False MAPISession1.SignOff End Sub |
Como funciona:
- Atribuimos o endereço eletrônico , inserido em Text1.text , a propriedade - RecipAddress
- O assunto do email é definido em Text2.text e associado a propriedade - MsgSubject
- O texto da mensagem presente em Text3.text é atribuido a propriedade - MsgNoteText
Obs- Essas propriedades somente podem ser definidas em tempo de execução
- O método Send é definido como False , assim mensagem não será enviada imediatamente , sendo direcionada para a caixa de saida.
Para poder acessar a sua agenda de endereços e assim poder enviar a mensagem para vários destinatários basta incluir a seguinte linha de código antes da linha : MAPIMessages1.Send False :
MAPIMessages1.Show
Anexando arquivos aos seus emails
Vamos agora adicionar a funcionalidade de anexar arquivos aos seus emails. Com os controles MAPI esta tarefa também é muito simples e você não vai se precisar se preocupar com nada além de indicar o arquivo a ser anexado. ( geralmente você teria que usar MIME ou UUENCODE neste processo ...)
Vamos aproveitar o projeto anterior e inserir mais uma caixa de texto - Text4.txt - que indicara o nome do arquivo que vamos anexar. O layout do formulário fica assim:
O Código associado ao botão Enviar é o seguinte:
Private Sub Command1_Click() MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Compose MAPIMessages1.RecipAddress = Text1.Text MAPIMessages1.MsgSubject = Text2.Text MAPIMessages1.MsgNoteText = Text3.Text 'anexa no final da mensagem MAPIMessages1.AttachmentPosition = Len(MAPIMessages1.MsgNoteText) 'define o tipo de dados do anexo MAPIMessages1.AttachmentType = mapData 'da um nome ao anexo MAPIMessages1.AttachmentName = "Anexos" 'define o caminho e nome do arquivo a anexar MAPIMessages1.AttachmentPathName = Text4.Text 'envia o arquivo MAPIMessages1.Send True MAPISession1.SignOff End Sub |
Como funciona:
- Apenas definimos as propriedades AttachmentPosition, AttachmentType , AttachmentName e AttachmentPathName do controle MAPIMessages
Ao executar o projeto deverás obter algo parecido com:
Deletando e repassando mensagens
Para encerrar nosso assunto veremos agora como podemos deletar e repassar mensagens recebidas usando o MAPI.
Para excluir uma mensagem basta usar o método Delete , assim: MAPI.Messages1.Delete
Para repassar uma mensagem usamos o método Forward : MAPI.Messages1.Forward
O controle MAPIMessages contém ainda outras propriedades para que possamos gerenciar mensagens de e-mail; embora elas não tenha sido aqui abordadas , abaixo temos uma relação com a descrição resumida de cada uma delas:
Propriedade | Descrição |
MsgConversationID | Determina o valor do identificador da conversação para a mensagem atual. |
MsgCount | Retorna o numero total de mensagens presentes no conjunto de mensagens recebidas para a sessão atual. |
MsgDateReceived | Retorna a data na qual a mensagem foi recebida. |
MsgID | Retona uma string que identifica a indice da mensagem atual. |
MsgIndex | Determina o número do indice da mensagem atual. |
MsgOrigAddress | Retorna o endereço de email do remetente da mensagem atual. |
MsgOrigDisplayName | Retorna o nome original para a mensagem atual. |
MsgRead | Retorna uma expressão Boleana indicando se a mensagem ja foi lida. |
MsgSent | Determina se a mensagem atual já foi enviada ao servidor de email para distribuição. |
MsgType | Define o tipo da mensagem atual. |
É claro que para mandar um email sem rodeios você simplesmente poderia usar o seguinte código no seu programa VB:
RetVal = SHELL("Start.exe mailto:macoratti@riopreto.com.br", vbHide)
É isso ai...
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: