IN: 0cm 0cm 12pt; TEXT-ALIGN: justify" align=left>Como integrar o Outlook com o Java

Aprenda como utilizar o Java SWT para interagir com o Microsoft Outlook, criando e enviando e-mails, contatos e compromissos.

Cada vez mais nos deparamos com necessidades de integração dentro das empresas. Seja no acesso a aplicações legadas, seja na integração com ferramentas e utilitários, as dúvidas normalmente são as mesmas: Qual o caminho mais rápido e seguro para interagir com um determinado componente? Se usarmos determinada forma de integração, que limitações ela nos trará? Quando falamos especificamente sobre envio de e-mails, então, possuímos uma gama de opções, ainda mais se tratando da linguagem Java. Podemos utilizar uma API, trabalhando diretamente com SMTP, por exemplo. De fato, talvez essa seja a forma mais simples de enviar e-mails utilizando o Java. Mas se o cliente precisar de algo mais complexo, tal como integrar com o Outlook, padrão de muitas empresas para gerenciamento de e-mails, compromissos e contatos? O objetivo desse artigo é mostrar uma forma de integração entre Java SWT e o Microsoft Outlook utilizando OLE. Vamos demonstrar como é possível enviar e-mails utilizando o Outlook e acessar outras funcionalidades, tais como criação de contatos e compromissos, experimentando todo o poder da automação OLE.

O Que é o OLE?

O Microsoft’s Object Linking and Embedding Interface for Windows, também conhecido como OLE, é uma interface de integração desenvolvida pela Microsoft para a comunicação entre diferentes aplicações, podendo inclusive integrar aplicações escritas em diferentes linguagens de programação. Com essa tecnologia é possível que uma determinada aplicação troque informações ou até mesmo seja embutida (Embedding) em outra. O OLE não é uma tecnologia nova, foi criado pela Microsoft ainda na década de 90 e era muito utilizado principalmente para integração de aplicações escritas em Delphi e Visual Basic. Hoje em dia, essa tecnologia ainda é bastante utilizada por diversas linguagens de programação, principalmente para integrá-las com ferramentas de escritório tais como Outlook, Word e Excel.

Como baixar os pacotes do Java SWT?

Para se utilizar os recursos do OLE no Java, é necessário primeiramente fazer o download das classes do SWT (Standard Widget Toolkit). Todas as classes necessárias estão dentro do pacote org.eclipse.swt.ole.win32  e podem ser adquiridas no site http://www.eclipse.org/swt.

Existem diversas formas de se instalar o pacote SWT, dentro e fora do Eclipse. Abaixo, segue um exemplo de como baixá-lo e utilizá-lo independentemente de plataforma de desenvolvimento. Outras formas de instalação e utilização do pacote podem ser encontradas na própria pagina do SWT.

1.      Dentro da página web do SWT, vá para opção “Releases” e selecione o sistema operacional;

2.      Se o Download não iniciar automaticamente, selecione o Mirror (origem) de onde deseja baixar o pacote;

3.      Após selecionar o Mirror, confirme o download colocando o arquivo em alguma pasta local;

4.      Descompacte o arquivo, e retire o swt.jar. Para utilizar as classes do SWT, basta adicioná-lo nas dependências de seu projeto.

Inicializando os objetos OLE

Embora os objetos de automação OLE sejam bastante úteis, eles também são bastante complexos de serem utilizados. Para facilitar o acesso ao Outlook utilizando OLE, a classe OLEController será utilizada. É importante salientar que a classe OLEController, juntamente com o restante das outras classes, podem ser baixadas na íntegra no site da revista. Essa classe é responsável por encapsular a complexidade de acesso e controle das interfaces do Outlook de forma a simplificar o restante do código. Como pode ser visto no código Listagem 1, um dos principais métodos da classe é o método startAutomation(). Este método inicializa o objeto OLEAutomation, que cria um mecanismo genérico para acesso a funcionalidades específicas de um documento ou aplicação que suporte OLE.  No exemplo deste artigo, esse é o objeto responsável por criar a interface com o Outlook.

Para criar o objeto OLEAutomation, é necessário primeiramente criar um objeto do tipo OLEClientSite, como demonstrado na linha de código 46 da Listagem 1. Este representa o cliente da aplicação e é utilizado nos casos onde se faz necessário que a aplicação embuta o controle do aplicativo, no caso, o Outlook. Para criar o objeto OLEClientSite é necessário primeiramente criar um OLEFrame. É possível criar esse objeto utilizando um Composite da própria aplicação (de forma que o controle fique embutido em algum frame da aplicação). Poderíamos, por exemplo, abrir uma planilha Excel ou um documento do Word dentro de um frame SWT da aplicação. No caso deste artigo, usando o Outlook, iremos simplesmente criar um novo Shell (executando a aplicação externamente).

Após a criação do objeto OLEClientSite, já podemos inicializar a automação OLE, criando o objeto OLEAutomation. Após a inicialização desse objeto, ele ficará encapsulado na classe OLEController, o que tornará mais simples a sua utilização.

O método getCommandId(), descrito na linha 53, é utilizado para obter o identificador de determinado comando ou operação, dentro do controle OLE. Utilizaremos esse método para obter os identificadores dos comandos de criação de contatos, e-mails e compromissos bem como para obter o valor de propriedades relativas a esses comandos.

O método setProperty(), linha 59, é utilizado para incluir/alterar o valor de uma determinada propriedade dentro do objeto OLE. Iremos utilizar esse método para, por exemplo, incluir um nome de contato ou adicionar o corpo do e-mail que estamos criando.

Os métodos invokeCommand(), linhas 67 e 74 (Listagem 1), são utilizados para executar os comandos do OLE. O primeiro método invokeCommand() será utilizado quando podemos executar um determinado comando diretamente. O segundo método será utilizado quando estamos executando um sub-comando. Pense como se estivéssemos navegando no menu principal do Outlook, para criar um novo contato devemos primeiramente selecionar a opção de novo item no menu e após a opção de criação de novo contato. É o mesmo caso, usaremos o segundo método invokeCommand() para requisitar a criação de um novo item e receberemos o objeto OLEAutomation que representará a interface de criação de itens. Utilizando essa interface e de posse do identificador do comando de criação de contatos utilizaremos o primeiro método invokeCommand()  para executar o comando propriamente dito.

 As constantes de acesso a operações e propriedades do Outlook podem ser adquiridas na documentação OLE da aplicação. Para ter uma visão um pouco mais ampla das diversas operações que o Outlook suporta, a Tabela 1 reflete os comandos mais utilizados. No caso desse artigo, usaremos somente as constantes olMailItem (para criação de e-mails), olAppointmentItem (para criação de compromissos) e olContactItem (para criação de contatos).

 

Constante

Valor

Descrição

olMailItem 

0

Utilizada para criação de e-mails

olAppointmentItem

1

Utilizada para criação de compromissos

olContactItem 

2

Utilizada para criação de contatos

olTaskItem 

3

Utilizada para criação de tarefas

olJournalItem 

4

Utilizada para criação de lembretes

olNoteItem 

5

Utilizada para criação de notas

Tabela 1. Principais constantes de integração com o Outlook

No que se refere à criação de itens, uma vez que determinada operação é definida, é necessário obter as propriedades que esta operação suporta. Por exemplo, uma vez que a criação de um novo e-mail foi determinada (através da constante olMailItem), é necessário obter as propriedades que essa operação suporta, como destinatário (To), assunto (Subject), corpo do e-mail (Body), etc. Essas operações, assim como as constantes, podem ser obtidas através da documentação OLE do aplicativo. Para facilitar, é possível também utilizar o método getOleDocumentation(). Esse método varre o objeto OLEAutomation (que representa a interface do aplicativo que está sendo manipulado) retornando todas as propriedades suportadas por determinado função do aplicativo. O funcionamento desse método será explicado com mais ênfase nos próximos tópicos. Por último, o método dispose() na linha 93, finaliza a interação com o objeto OLE.

Uma lista com as principais classes do pacote OLE pode ser vista na Tabela 2.

 

Listagem 1. Gerenciando os objetos OLE com a classe OLEController

1. package src;

2.  

3. import org.eclipse.swt.SWT;

4. import org.eclipse.swt.ole.win32.OleAutomation;

5. import org.eclipse.swt.ole.win32.OleClientSite;

6. import org.eclipse.swt.ole.win32.OleFrame;

7. import org.eclipse.swt.ole.win32.Variant;

8. import org.eclipse.swt.widgets.Shell;

9.  

10.   //Essa classe encapsula os comandos principais da Automação OLE

11.   //simplificando o acesso as funcionalidades do Outlook

12.   

13.  public class OLEController {

14.      // Registro do outlook

15.      public static final String OUTLOOK_REG_APP = "Outlook.Application";

16.     

17.      // Nome da propriedade de criação de itens

...

Quer ler esse conteúdo completo? Tenha acesso completo