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:
- Desenvolvimento
- Windows XP,Vista,7,Server 2003 ou 2008
- Microsoft Office Outlook 2003 ou 2007
- Visual Studio 2005 ou 2008
- Antivírus atualizado*
- Produção
- Windows XP,Vista,7,Server 2003 ou 2008
- Microsoft Office Outlook 2003 ou 2007
- 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)
- antivírus atualizado*
*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 Application app = new Microsoft.Office.Interop.Outlook.Application(); //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 MicrosoftPara softwares de correio*/
NameSpace ns = app.GetNamespace("MAPI"); try{
//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 Console.ReadLine();}
catch (System.Exception ex){
throw;}
}
-
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 Application app = new Microsoft.Office.Interop.Outlook.Application(); try{
//Cria um item do tipo Email MailItem mail = (MailItem)app.CreateItem(OlItemType.olMailItem); //Define o destinatariomail.To = _Destinatario;
//Define o Assunto do e-mailmail.Subject = _Assunto;
//Define o Corpo da mensagemmail.Body = _Corpo;
//Define que a mensagem dever ser enviada no formato htmlmail.BodyFormat =
OlBodyFormat.olFormatHTML; /*Por Fim, envia a mensagem por dentro do Outlook* Vale o comentrio, mais fcil que usar a biblioteca
* System.Net.Mail*/
mail.Send();
}
catch (System.Exception ex){
throw;}
}
-
Deletando um E-mail
/*Para deletar um e-mail, basta que aps ter achado Dentro do mtodo de busca,
* voc chame o delete(); */
mail.Delete();
-
Criando uma Pasta
static
void CriaPasta(string _NomePasta){//Declarao do Application, representa toda a aplicaao do Outlook Application app = new Microsoft.Office.Interop.Outlook.Application(); NameSpace ns = app.GetNamespace("MAPI"); try{
//Instancia a caixa de entrada dos e-mails MAPIFolder inBox = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox); //Cria uma pasta dentro da caixa de entrada do tipo FolderInBoxinBox.Folders.Add(_NomePasta,
OlDefaultFolders.olFolderInbox);}
catch (System.Exception ex){
throw;}
}
-
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.