Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Attachments en mails (https://www.clubdelphi.com/foros/showthread.php?t=9254)

rsotolongo 18-04-2004 22:44:13

Attachments en mails
 
Todo comenzó con mi necesidad de enviar correos con archivos adjuntos a través de los componentes Indy 9 en Delphi 7 y miren que interesante está este código.

En él creo dos mensajes (m1 y m2) de los cuales solo al primero lleno una serie de campos y luego realizo una copia en m2 a través de SaveToStream/LoadFromStream. Pues resulta que al comparar los ficheros de salida m1.txt y m2.txt no son iguales como deberían ser perdiéndose en m2.txt el asunto del mensaje. Ahora bien, si comentamos la línea que adjunta el fichero code.txt al mensaje m1, los ficheros de salida son idénticos.

Puede alguien decirme qué está pasando aquí u otra forma de adjuntar ficheros a un mensaje.

procedure Doit;

var
m1, m2 : TIdMessage;
stream : TMemoryStream;

begin
m1 := TIdMessage.Create(nil);
m2 := TIdMessage.Create(nil);
m1.Body.Text := 'Cuerpo del mensaje';
TIdAttachment.Create(m1.MessageParts, 'code.txt');
m1.Recipients.Add;
m1.Recipients[0].Address := 'snake@redway.cu';
m1.SaveToFile('m1.txt');
stream := TMemoryStream.Create;
m1.SaveToStream(stream);
stream.Position := 0;
m2.LoadFromStream(stream);
m2.SaveToFile('m2.txt');
end;

Gracias de antemano...

Julià T. 19-04-2004 01:01:54

Cuantos dolores de cabeza tuve con esto mismo, hasta que descubrí el funcionamiento de las propiedades NoDEcode, NoEncode.

Cada vez que pasas los datos a un stream/fichero o lo cargas, se recodifica la información y en algún caso se pierde.

Para que funcione correctamente y si no me equivoco tendrías que poner en
Código:

 
m1.NoEncode:=True;//creo que codifica cuando guarda
m1.SaveToFile('m1.txt');
stream := TMemoryStream.Create;
m1.SaveToStream(stream);
stream.Position := 0;
m2.NoDecode:=True;//creo que descodifica cuando lee
m2.LoadFromStream(stream);
m2.NoDecode:=True;
m2.SaveToFile('m2.txt');


rsotolongo 19-04-2004 06:10:48

Agradecimientos
 
Muchas gracias por la explicación ya he resuelto parcialmente el problema


La franja horaria es GMT +2. Ahora son las 09:29:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi