Interoperabilidade com Microsoft Office Outlook 2007, Lendo, Deletando, e Criando um e-mail
Trabalhando com Microsoft Office Outlook via Interop. Criando, Lendo, Deletando Emails e Pastas no Outlook 2007.
Artigos .NET Interoperabilidade com Microsoft Office Outlook 2007, Lendo, Deletando, e Criando um e-mail
A pouco tempo estive em um projeto bastante interessante no qual era necessário que a minha aplicação ficasse monitorando uma caixa de mensagem provinda de um Microsoft Exchange 2007, após o recebimento das mensagens elas seriam parametrizadas e reenviadas para outro destino, isto tudo de forma automática sem a necessidade de intervenção humana durante o processo. Foram analisados varais soluções, mas devido à natureza nada simples do projeto, foi escolhido que uma aplicação ficaria responsável por este monitoramento da caixa de mensagem.
Para começarmos,primeiramente precisamos preparar o ambiente, tanto o de desenvolvimento como o de produção. Para os ambientes as seguintes aplicações precisam estar instaladas:
Windows XP,Vista,7,Server 2003 ou 2008
Microsoft Office Outlook 2003 ou 2007
Visual Studio 2005 ou 2008
Antivírus atualizado*
Bibliotecas de interop do office(2007 – http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=59daebaa-bed4-4282-a28c-b864d8bfa513 | 2003 - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad)
*o A instalação do antivírus não é obrigatória, mas para garantir que não é nenhum vírus que está passando a mensagem o Outlook não confia em nenhuma aplicação que tente acessar os seus recursos sem as devidas proteções dentro da maquina. Caso você opte por não instalar um antivírus, todas as vezes que a aplicação tentar consumir algum recurso do Outlook será mostrado uma tela pedindo a confirmação de que a aplicação pode realmente ser tratada como segura.
Criando a projeto:
Para iniciarmos, vamos criar um projeto de console application no Visual Studio 2008, para isto vamos apertar o (CTRL + SHIFT + N) -> Vamos escolher Console Application, dar o nome de AppOutlook –>OK
Adicionando as referencias as bibliotecas de interoperabilidade
Aqui vamos adicionar a referencia as bibliotecas de interop do Outlook, para isto vamos expandir o Solution Explorer, clicar com o botão direito em cima da pasta REFERENCES e clicar em Add Reference.
Na tela que se abriu procurem por Microsoft.Office.Interop.Outlook, version 12.0.0.0, selecionem e cliquem em OK.
Agora que já importamos a biblioteca para dentro do projeto, vamos referenciá-la na nossa classe, para isto vamos adicionar a palavra using seguida do namespace Microsoft.Office.Interop.Outlook;
Leitura dos E-mails na caixa de entrada.
static void CapturaEmails()
//Declarao do Application, representa toda a aplicaao do Outlook
//Declarao do Namespace, que seria como se fosse a fonte de dados do outlook no tipo MAPI
/*MAPI = Messaging Application Programming Interface, interface de programao da Microsoft
Para softwares de correio*/
//Declarao de um ForEach que ir capturar todos os itens que esto dentro da caixa de entrada
foreach (MailItem _mail in ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox).Items)
//Nossa aplicao s ir ler os e-mails no lidos, os lidos sero descartados
if (_mail.UnRead)
//Imprime na tela algumas informaes do e-mail
Console.WriteLine(string.Format("Email Novo: Assunto: {0}, Remetente: {1}, Corpo: {2}",
_mail.Subject,_mail.SenderName,_mail.Body));
//Muda o situao do e-mail para lido
_mail.UnRead = false;
//Apensar para podermos ler o que foi impresso na tela
Criando e Enviando um e-mail
static void EnviaEmail(string _Destinatario, string _Assunto, string _Corpo)
//Declarao do Application, representa toda a aplicação do Outlook
//Cria um item do tipo Email
MailItem mail = (MailItem)app.CreateItem(OlItemType.olMailItem);
//Define o destinatario
mail.To = _Destinatario;
//Define o Assunto do e-mail
mail.Subject = _Assunto;
//Define o Corpo da mensagem
mail.Body = _Corpo;
//Define que a mensagem dever ser enviada no formato html
/*Por Fim, envia a mensagem por dentro do Outlook
* Vale o comentrio, mais fcil que usar a biblioteca
* System.Net.Mail*/
Deletando um E-mail
/*Para deletar um e-mail, basta que aps ter achado Dentro do mtodo de busca,
* voc chame o delete(); */
static void CriaPasta(string _NomePasta)
//Instancia a caixa de entrada dos e-mails
MAPIFolder inBox = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
//Cria uma pasta dentro da caixa de entrada do tipo FolderInBox
inBox.Folders.Add(_NomePasta, OlDefaultFolders.olFolderInbox);
Movendo um e-mail para a nova pasta
MAPIFolder destPasta = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox).Folders["Olavo"];
_mail.Move(destPasta);
Espero com este pequeno artigo ter demonstrado como é simples trabalhar com as bibliotecas de interop da Microsoft par o Microsoft Office Outlook. Muito simples e rápido de implementar, sem falar que você está lhe dando com uma aplicação robusta e extremamente testada e estressada pelos desenvolvedores da Microsoft.
Quanto ao projeto, hoje ele está rodando de forma direta, recebendo, parametrizado e enviando mais de 2mil e-mails por dia.