![]() |
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?
|
Hola.
Deberías de poner el código que usas para decirte algo. Saludos |
Cita:
|
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; |
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; |
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. |
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 . . .
|
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.
|
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 11:24:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi