Clube Delphi Edição 82
Esse artigo faz parte da revista Clube Delphi Edição 82. Clique aqui para ler todos os artigos desta edição

Envio automatizado de emails com Delphi e Outlook

 

Recentemente fui convidado a incluir um recurso em um aplicativo, para que ele fosse capaz de gerar, automaticamente, e-mails através do Outlook. A idéia era percorrer todos os registros da tabela de funcionários, e para cada funcionário cadastrado, gerar um e-mail, através de um template previamente configurado pelo usuário, com os dados da mala direta.

Entre outros recursos, o aplicativo fornecia ao usuário a opção de gerar mensagens tanto em formato texto como em HTML. Neste artigo apenas demonstrarei recursos básicos, fornecendo uma introdução ao tema. Em outros artigos abordaremos recursos mais complexos, como, por exemplo, anexar arquivos, importar lista de contatos (ou exportar) e aplicação de filtros em mensagens recebidas.

No final da série, desenvolveremos um aplicativo completo que controlará o envio e recebimento de e-mails, em um banco de dados de rastreabilidade de mensagens, com o uso do TurboPower OfficePartner (freeware).

O aplicativo é bem simples, mas as idéias podem ser aplicadas em diversos outros projetos, como por exemplo, envio personalizado de e-mails para clientes aniversariantes, alerta de produtos com baixo estoque etc. Basta usar a criatividade.

 

Introdução sobre automação

Automação, como o próprio nome sugere, significa automatizar ou controlar algo. No conceito da programação, significa controlar uma aplicação através de outra. Funciona como um contrato entre as duas aplicações, e esse (contrato) funciona através de interfaces.

No Delphi, utilizamos as Type Libraries, que é uma espécie de repositório onde são expostas as funções disponíveis de uma aplicação. Neste artigo utilizaremos o Delphi 7, mas o exemplo pode ser aplicado nas versões posteriores (Delphi 2005 e 2006).

O Delphi 7 já vem com as Type Libraries importadas do Office 97, 2000 e XP. No caso trabalharemos com o Office 2003 e utilizaremos a unit OutlookXP. O exemplo pode ser aplicado com o Office XP.

 

Um exemplo simples

Crie um novo projeto no Delphi, e na seção uses adicione as units OutlookXP, OleServer e ComObj. No evento OnCreate do formulário adicione o código da Listagem 1.

 

Listagem 1. Exemplo simples de envio de e-mail

var

  NmSpace: NameSpace;

  Outlook: TOutlookApplication;

  MI: MailItem;

begin

  Outlook := TOutlookApplication.Create(nil);

  Outlook.ConnectKind := ckRunningOrNew;

  Outlook.Connect;

  try

    NmSpace := Outlook.GetNamespace('MAPI');

    NmSpace.Logon('', '', False, False);

 

    MI := Outlook.CreateItem(olMailItem) as MailItem;

    MI.Recipients.Add('destinatario@provedor.com.br');

    MI.Subject := 'Testando assunto';

    MI.Body := 'Testando corpo da mensagem';

    MI.Display(False);

  finally

   try

     nmSpace.LogOff;    

   except

   end;

   try

     Outlook.Disconnect;

   except

   end;

end;

 

O código da listagem anterior é bem simples. Declaramos a variável Outlook do tipo TOutlookApplication para “conectarmos” ao Outlook. Não é necessário configurar a propriedade AutoConnect para True, pois o Outlook requer o Login em um perfil MAPI  para que seja possível o envio e recebimento de e-mails.

Esse processo foi realizado através da variável NmSpace. A variável MI do tipo MailItem é a variável que contém as propriedades e métodos para compor a mensagem. As principais propriedades são:

·         ...

Quer ler esse conteúdo completo? Tenha acesso completo