Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema Indy y Delphi (https://www.clubdelphi.com/foros/showthread.php?t=76685)

dbautista 18-11-2011 01:55:47

Problema Indy y Delphi
 
Buenas noches compañeros, fijense que trato de enviar archivos adjuntos por medio de correo utilizando Indy 10.2.5 en Delphi 2009, y efectivamente se envia el correo pero el archivo adjunto no importa que extension, siempre es renombrado a ATT0003.dat o un numero aleatorio. Por favor alguien puede ayudarme?

newtron 18-11-2011 09:54:38

Hola.

Deberías de poner el código que usas para decirte algo.

Saludos

Casimiro Notevi 18-11-2011 11:02:57

Cita:

Empezado por newtron (Mensaje 418812)
Hola.
Deberías de poner el código que usas para decirte algo.
Saludos

Sí, estaría bien, lo mismo ayuda poder ver el código :)

dbautista 18-11-2011 15:04:44

Muchas gracias por contestar amigos, este es el codigo que utilizo . . . de antemano les agradezco su tiempo y apoyo, estare al pendiente.

procedure TfrBandejaAutorizaPedidos.Button1Click(Sender: TObject);
var
MailMessage: TIdMessage;
SMTP: TIdSMTP;
begin
SMTP.Host := '192.168.0.150';
SMTP.Port := 25;
SMTP.Username := 'desarrollodti@liztex.com';
SMTP.Password := 'desarrolloit';

MailMessage.Recipients.add;
MailMessage.Recipients[0].Name:='Sistema de Produccion';
MailMessage.Recipients[0].Address:='dbautista@liztex.com';

MailMessage.From.Address :='dbautista@liztex.com';
MailMessage.From.Name :='Ordenes';
MailMessage.Recipients.EMailAddresses :='dbautista@liztex.com';

MailMessage.Subject :='Listado de Ordenes';
MailMessage.Body.Text :='Verificar Archivo Adjunto';

if FileExists('D:\Pruebas.txt') then
TIdAttachmentFile.Create(MailMessage.MessageParts, 'D:\Pruebas.txt');

try
try
SMTP.Connect;
SMTP.Send(MailMessage);
except on E:Exception do
ShowMessage(E.Message);
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;

end;


end;

casacham 20-11-2011 21:00:13

Aqui esta tu solucion
 
El delphi 2009 tiene un error en el archivo
IdMessageClient.pas que no te permite mandar
archivos adjuntos por correo. Por suerte
un tio de Quality Central lo corrigio de la
siguiente manera
Buscas el dichoso archivo en la instalacion de
D2009 y haces lo siguiente. Sino aqui ya lo tenes
corregido por mi y deberas reemplazar los siguientes
archivos.
Buscas en C:\Program Files (x86)\CodeGear\RAD Studio\6.0
todas las coincidencias de IdMessageClient y reemplazas
los archivos originales porlos corregidos:
IdMessageClient.dcu
IdMessageClient.pas
Para obtener el archivo DCU, tenes que utilizar el PAS
en algun proyecto, entonces cuando lo compilas aparece
el archivo DCU.

Los instaladores del INDY se encuentran en indy.fulgan.com
es un ftp, asi que debes ponerlo tal cual
http://qc.embarcadero.com/wc/qcmain.aspx?d=66867
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;

casacham 20-11-2011 21:12:12

Comentarios finales
 
Ese problema que comentas lo he resuelto siguiedo los pasos que se indican aqui

El problema esta en el cambio de version. Espero que puedas solucionarlo.

Yo lo hice siguiendo paso por paso como se describe en la solucion y el asunto se arreglo. Luego me hice una copia de los archivos corregidos para una futura instalacion de D2009 ya tuviera resuelto el problema. Como ya me pase a DXE no tengo los archivos para pasartelos, pero como veras deje guardado en mi biblioteca la solucion.

dbautista 22-11-2011 17:55:31

Buen dia casacham, de verdad te agradezco tu ayuda, hasta hoy me pude conectar y ver tu respuesta, voy a hacer lo que me indicaste y te aviso como me fue. Muchas gracias por preocuparte . . .

dbautista 24-11-2011 21:10:50

Buen dia compañeros, les comento que con la solucion que me dio el amigo casacham, logre enviar archivos adjuntos. Muchas gracias por tu ayuda casacham, y doy por terminado este tema.

Casimiro Notevi 24-11-2011 21:19:30

Vaya, veo que ninguno conocéis las etiquetas para presentar código legible. Ni siquiera casacham, con más de 160 mensajes :confused:

Un ejemplo:



La franja horaria es GMT +2. Ahora son las 03:31:21.

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