Classe para Enviar Email com anexo

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Esta classe tem metodos e propriedades para as principais necessidades para o envio de um email com anexo. Faça o Download do exemplo.

No onclick do botao tem o exemplo de como usar os principais metodos da classe.

Obs.: Se você utiliza o Delphi 2009 como eu ou a INDY 10, Caso você não saiba a indy10 veio com alguns bug,vai junto com o exemplo a DCU do arquivo IdMessageClient.dcu ja compilada com as alterações feitas.

Caso prefira vc mesmo alterar o seu arquivo IdMessageClient.pas e compilar segue o link da Embarcadero com as alterações necessarias a serem feitas:http://qc.embarcadero.com/wc/qcmain.aspx?d=66867

O arquivo IdMessageClient.pas fica em : C:\Program Files\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Protocols\IdMessageClient.pas.

Depois de compilar tera q copiar o arquivo IdMessageClient.dcu para q pasta C:\Program Files\CodeGear\RAD Studio\6.0\lib\Indy10\IdMessageClient.dcu.

Alterações a serem feitas:

Hi,
I am able to reproduce this issue with the Indy Version shipped together with Delphi 2009.
There are some missing/wrong line breaks within Indy\Protocol\IdMessageClient.pas. The problem has already been fixed in the Indy SVN.

Possible solutions are:

  1. Fix the IdMessageClient.pas on your own (see below)
  2. Use the newest Indy source from the Indy SVN

To fix the bug on your own do the following:

  • Open in the VCL source folder the file Indy\Protocol\IdMessageClient.pas
  • Search for the procedure "procedure TIdMessageClient.SendBody(AMsg: TIdMessage);"
  • Inside the procedure locate and change the lines with the informations given below
  • Recompile the .pas and place the dcu (debug and release) in the appropriate directories

1) Insert below line 1214:

IOHandler.writeln(';');

2) Change in line 1219 (new line 1220):

IOHandler.WriteLn('Content-Disposition: ' + LAttachment.ContentDisposition); {do not localize}
to
IOHandler.Write('Content-Disposition: ' + LAttachment.ContentDisposition); {do not localize}

3) Insert below line 1220 (new line 1221):

IOHandler.WriteLn(';');

The fixed source part of IdMessageClient.pas looks afterwards like:

...
  if LFileName <> '' then begin
    IOHandler.WriteLn(';'); // inserted for QC 66867
    IOHandler.Write('        name="' + LFileName + '"'); {do not localize}
  end;
  IOHandler.WriteLn;
  IOHandler.WriteLn('Content-Transfer-Encoding: ' + LAttachment.ContentTransfer); {do not localize}
  // next line fixed for QC 66867, changed IOHandler.WriteLn to IOHandler.Write
  IOHandler.Write('Content-Disposition: ' + LAttachment.ContentDisposition); {do not localize}
  if LFileName <> '' then begin
    IOHandler.WriteLn(';'); // inserted QC 66867
    IOHandler.Write('        filename="' + LFileName + '"'); {do not localize}
  end;
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?