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:
· ...