Enviando por e-mail automaticamente um PDF gerado a partir do Quick Report
Antes de iniciarmos o tutorial, é necessário que você baixe as DLLs
abaixo e as coloque na pasta "C:\Windows\System32":
Download Dlls E-mail Delphi
O tutorial se baseia numa continuação da 1ª parte, a qual termina
com um botão no qual o PDF é gerado em um local pré-determinado.
Antes de qualquer coisa, é necessário incluir na cláusula "Uses" a
palavra IdMessage. Após esses comandos da 1ª parte, é necessário
criar no cabeçalho do evento Click do botão as seguintes variáveis:
var
cc, assunto, sDiretorioArquivo : String;
IdMessage1 : TIdMessage;
IdSMTP1 : TIdSMTP;
mmMensagem : TMemo;
Agora volte ao fim do clique do BitBtn novamente e digite o seguinte:
Note que neste momento a variável sDiretorioArquivo recebe como texto
o diretório que foi digitado na última linha da 1ª parte do Tutorial. Uma
dica seria configurar esse diretório automaticamente, sendo assim o
usuário criaria o PDF e enviaria ao destinatário automaticamente:
sDiretorioArquivo := Edit1.Text;
Em seguida, preencha as configurações do cabeçalho, corpo e anexos
do e-mail:
IdMessage1 := TIdMessage.Create(nil);
IdSMTP1 := TIdSMTP.Create(nil);
//e-mail do Remetente
IdMessage1.From.Address := 'teste@mail.com';
//e-mail do Destinatário
IdMessage1.Recipients.EMailAddresses := 'abc@mail.com';
IdMessage1.Body.Clear;
IdMessage1.Body.Add('Sr(a) Fulano(a).');
IdMessage1.Body.Add('PDF anexado referente à (...)');
IdMessage1.Body.Add('');
IdMessage1.Body.Add('Pela atenção, obrigado.');
IdMessage1.Subject := 'Empresa - Doc: (...) '; //Assunto
IdMessage1.Body.Add('Corpo da mensagem');
//Anexando o PDF criado na parte 1 deste tutorial
TIdAttachment.Create(IdMessage1.MessageParts,
TFileName(sDiretorioArquivo + '.pdf'));
E por fim configure o servidor de e-mails, que no caso utilizamos como
exemplo o Yahoo:
//Configuração do IdSMTP
//Configurações remente
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := 'smtp.mail.yahoo.com.br'; //Host
IdSMTP1.Username := 'remetente@mail.com'; //Remetente
IdSMTP1.Password := '123'; //Senha do Remetente
IdSMTP1.Port := '25'; //Porta padrão do Yahoo
IdSMTP1.Connect; //Estabelece a conexão
IdSMTP1.Authenticate; //Realiza a autenticação
try
IdSMTP1.Send(IdMessage1); //Envia a mensagem
Form1.Refresh;
Form1.Refresh;
ShowMessage('Envio realizado com sucesso');
except
on e:exception do
begin
Application.MessageBox(Pchar(e.Message),
Pchar('Erro.'), mb_ok+mb_iconerror);
end;
end;
IdSMTP1.Disconnect;
Agora basta rodar a aplicação, informar dados válidos do servidor de
e-mail do Remetente e usar a criatividade para solucionar o problema
de sua empresa.
Conclusões
Notamos neste artigo a facilidade de envio de e-mails com anexos em
PDF gerados pelo Delphi 7. Forte abraço e até o próximo tutorial.