quarta-feira, 16 de outubro de 2013

Pop3

Pop é de fato uma boa abreviação para popular, como diria o bom dicionário Oxford, o difícil é defini-lo como um estilo musical, o mesmo dicionário faz uma confusão danada ao tentar descrevê-lo.  A primeira referencia ao Pop é de 1926!, mas os mais estudiosos o posicionam em 1950 na Inglaterra, quando o termo Pop Music foi criado. Mas o fato é que uma pesquisa no Google revela 1.250 milhões de páginas que tratam deste assunto. Portanto, todos gostam de um bom estilo popular.

Acho que quando foi criado o Pop3 a ideia era popularizá-lo assim como ocorreu com a musica que se tornou mundial e importante.  E por incrível que pareça, creio que o tal Pop3 hoje deve ser mais importante no seu dia-a-dia que a própria musica Pop. Porque? simples, é o protocolo Post Office Protocol, que traduzido para o português simples significa: protocolo utilizado para acesso a uma caixa postal de correio eletrônico (email).

Agora vamos a um cenário interessante, que tal se você construir o próximo sistema de caixa de correio, para substituir os já re-estilizados Google Mail, Outlook e assim por diante, quem sabe se seu projeto incluísse recursos de troca de imagens, grupos, contatos,..., viagem? Acho que sim, creio que ninguém vai gastar muita energia para produzir algo assim, mesmo que em Genexus a coisa seja muito fácil de fazer.  Ou seja, Genexus oferece a você recursos que possibilitam a construção de sistemas do tipo caixa de correio eletrônico. Vamos programar uma, digamos, só por curiosidade?

Tipo Pop3Session

Tudo começa com uma variável &Pop3Session, do mesmo tipo, que tem por incumbência conectar a um certo servidor de e-mails, e obter as mensagens que lá estão.

// conexao no POP3
&pop3session.Host       = '*** servidor POP ***'
&pop3session.Port       = 110
&pop3session.UserName   =
'*** email ***'
&pop3session.Password   = '*** senha ***'     
&pop3session.Login()


Em caso de sucesso na conexão ao servidor, uma mensagem OK poderá ser utilizada para prosseguir com a operação.

if &pop3session.ErrDescription = 'OK'

   ... continuar ...
endif

Esse comando If nos permite saber se a conexão ocorreu com sucesso, mas caso contrário, talvez seja interessante você conhecer as possíveis mensagens de erro retornadas na operação.

Lendo mensagens

A segunda parte do processo consiste em ler as mensagens que estão no servidor, sendo que para isso podemos realizar dois algoritmos simples:

1) Total de mensagens a ler

&total = &pop3session.Count
for &i=1 to &total
  &pop3session.Receive(&mailmessage)

  
   ... tratar a mensagem
 
endfor

2) Ler enquanto não ocorrer erro

do while &erro=0
   &erro = &pop3session.Receive(&mailmessage)
   if &Erro = 0
      ... tratar a mensagem
   endif
enddo

Em ambas as situações o que Receive nos devolve é a mensagem no formato MailMessage, ou seja, com todas as informações, To, Subject, ..., bem simples de ler e entender o conteúdo recebido.

Uma vez lida a mensagem do servidor, algumas ações poderão ser realizadas, como por exemplo:

&pop3session.delete()
Para apagar a mensagem previamente lida, removendo-a da caixa de entrada remota.

Tem uma outra propriedade MarkAsRead que insiste em apresentar um erro quando utilizo, mas creio que possa ser útil, não tenho certeza.

Fechando a conta

Antes de fechar não se esqueça de realizar um.

&pop3session.logout()

Assim como ocorreu com o Pop Music, em 1950, esse tipo existe desde a versão 7.5 do Genexus, não que o nosso Gx existia nesta época, é que o recurso que temos em mãos na verdade já é bem antigo, mas continua a provocar suspiros nas meninas.

Eu particularmente, gosto bastante.