Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Adjunto noname en mail con Indy (https://www.clubdelphi.com/foros/showthread.php?t=63500)

DrkMgc 17-02-2009 14:19:01

Adjunto noname en mail con Indy
 
Hola Foro!

Resulta que hice un programa para mandar mails, y quise añadirle la posibilidad de adjuntar archivos. Saqué las referencias de este foro como para guiarme.

No tengo ningún error. El problema se da cuando reviso mi correo. Recibo el archivo adjunto, pero con el nombre 'noname', sin extensión, y así se baja. Evidentemente es el archivo que adjunto, porque si adjunto un *.doc, bajo el 'noname' y lo abro con Word, y puedo ver el contenido sin problemas, igual con las imagenes y con los pdf.

Les paso el código para el envío:
Código Delphi [-]
procedure TFormMensaje.ButtonEnviarClick(Sender: TObject);
begin
  ProgressBar1.Visible := True;
  IdSMTP.Host := EditSMTP.Text;
  IdSMTP.Username := EditUsuario.Text;
  IdSMTP.Password := EditPassword.Text;
  if not IdSMTP.Connected then
    IdSMTP.Connect;
  IdMessage.From.Address := EditPara.Text;
  IdMessage.From.Name := EditNombre.Text;
  IdMessage.Body := MemoMensaje.Lines;
  IdMessage.Subject := EditAsunto.Text;
  IdMessage.Recipients.EMailAddresses := EditPara.Text;
  IdSMTP.Send(IdMessage);
  Application.MessageBox('Mensaje enviado.', 'Aviso', MB_OK + MB_ICONINFORMATION);
end;


Este es el código para adjuntar:

Código Delphi [-]
if OpenDialogAdjunto.Execute then
  begin
    //LabelRuta.Caption :=  TIdAttachmentFile.Create(IdMessage.MessageParts, OpenDialogAdjunto.FileName).FileName;
    LabelRuta.Caption :=  TIdAttachmentFile.Create(IdMessage.MessageParts, 'D:\Dibujo.jpg').FileName;
  end;

¿Cómo puedo hace para que el archivo se adjunte con su nombre y extensión original?

Thanks in advance!

Caro 17-02-2009 15:03:18

Hola, yo lo hago así directo y me lo envía bien. El FileName del TIdAttachmentFile yo lo utilizo para recuperar archivos adjuntos, cuando lees el correo con TidPOP3.

Código Delphi [-]
if OpenDialogAdjunto.Execute then
  begin
    TIdAttachmentFile.Create(IdMessage.MessageParts, OpenDialogAdjunto.FileName);
    LabelRuta.Caption := OpenDialogAdjunto.FileName;
  end;

Saluditos

DrkMgc 17-02-2009 18:18:02

Gracias por responder.

He intentado aplicar tu código, pero tengo los mismos resultados.

Algo que olvidé poner es que además de usar un IdSMTP y un IdMessage de los Indy, uso un IdSSLIOHandlerSocketOpenSSL porque para enviar mails para Gmail, necesito eso para establece una conexión segura... quizás eso influye...

Caro 17-02-2009 18:31:42

Hola de nuevo, no creo que influya, hace un tiempo también hice pruebas con una cuenta de gmail utilizando TIdSSLIOHandlerSocketOpenSSL e Indy10 y no he tenido problemas.

Saluditos

DrkMgc 17-02-2009 18:44:51

Hola, y gracias de nuevo...

No me explico cuál puede ser el problema... te paso una captura para que veas cómo llega el mensaje

http://farm4.static.flickr.com/3583/...51a539fa_o.jpg

Estoy usando Delphi 2009 con Indy 10 sobre Windows Vista

PaCmAn72 08-09-2010 11:12:53

Hola a todos, yo tengo el mismo problema. ¿Lo solucionaste ya o aun sigue sin solucion?
Un saludo.

IVAND 02-01-2023 14:56:23

Hola a tos feliz anio , tengo el mismo problema

Casimiro Notevi 02-01-2023 19:30:29

Hola, feliz año a ti también ^\||/
¿Qué código estás usando?
Código Delphi [-]
  if OpenDialogAdjunto.Execute then  
  begin     
    TIdAttachmentFile.Create(IdMessage.MessageParts, OpenDialogAdjunto.FileName);     
    LabelRuta.Caption := OpenDialogAdjunto.FileName;   
end;

IVAND 03-01-2023 00:48:58

Gracias por responder , si con la misma forma , uso delphi 2009 y los indy que vienen por defecto , uso el mismo codigo en delphi 11 y funciona sin problemas , parece que algo me falta en delphi 2009
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var smtp:TIdSMTP;
  mail:TIdMessage;
  Attachmentfile: TIdAttachmentFile;
begin
    smtp := TIdSMTP.Create(Self);
      Mail := TIdMessage.Create(Self);
      with smtp do
      begin

        Port:=465;
        Host:= 'smtp.gmail.com';
        Username:='comcasanova2018sa@gmail.com';
        Password:='hyzvtyccwttttt';  // 
        IOHandler:=SSLIOHandler;
        UseTLS := utUseExplicitTLS;
        AuthType:=satDefault ;
      end;

      SSLIOHandler.Port:= 465;
      SSLIOHandler.Host:= 'smtp.gmail.com';
      SSLIOHandler.Destination:='smtp.gmail.com:' + IntToStr(SSLIOHandler.Port);

      with mail do
      begin
        Recipients.Add;
        Recipients[0].Name   :='SitiSystems';
        Recipients.EmailAddresses:='ivand2011@gmail.com';
        From.Name            :='Integral ERP';
        From.Address         :='comcasanova2018sa@gmail.com';
        Subject              :='Se ha enviado un documento electronico';
        Body.Text:='Prueba de correo..revise adjunto'; // Es el texto del mensaje
        //ContentType := 'text / plain';
        CharSet      := 'utf-8';
        Encoding     := meMIME;
        Priority     := mpNormal;
        ContentType := 'multipart/mixed';
      end;
      Attachmentfile:=TIdAttachmentFile.Create(mail.MessageParts,'C:\Embajada\Ruc.pdf');
   //   Attachmentfile.FileName:='C:\Embajada\Ruc.pdf';
   //   Attachmentfile.ContentType := 'application/octet-stream';
   //   Attachmentfile.ContentID:='C:\Embajada\Ruc.pdf';
  //    Attachmentfile.DisplayName:='C:\Embajada\Ruc.pdf';
      try
        smtp.Connect;
      except
        ShowMessage('Ocurred an Error, The Message was not Sent');
      end;
        Screen.Cursor:=CrDefault;

      try
        smtp.Send(mail);
      except
      //on E: Exception do
        ShowMessage('The Message was not Sent');
      end;

      if smtp.Connected then
        smtp.Disconnect;
      mail.Free;
      smtp.Free;
end;

en uno funciona bien en otro no , que puede estar pasando , esperando sus consejos 
en 2009 envia el correo perfecto pero adjunta el archivo como noname y en delphi 11

Casimiro Notevi 03-01-2023 10:09:02

Prueba cambiando esto:
Código Delphi [-]
Attachmentfile:=TIdAttachmentFile.Create(mail.MessageParts,'C:\Embajada\Ruc.pdf');
por esto otro:
Código Delphi [-]
TIdAttachmentFile.Create(mail.MessageParts,'C:\Embajada\Ruc.pdf');

IVAND 03-01-2023 13:08:37

Muy gentil por darte el tiempo , si efectivamente ya probe esa opcion , sigue colocando el nombre nomame , si lo descargo y renombro se abre sin problemas

Puede ser errror de los indy ?

Casimiro Notevi 03-01-2023 14:18:02

Cita:

Empezado por IVAND (Mensaje 549777)
Muy gentil por darte el tiempo , si efectivamente ya probe esa opcion , sigue colocando el nombre nomame , si lo descargo y renombro se abre sin problemas
Puede ser errror de los indy ?

No creo, más bien diría que será algo del programa que uses para descargar los emails.
Por probar, envíame un email a esta dirección, para echarle un vistazo.


IVAND 03-01-2023 14:45:21

Te envio ahora , pero creo que no, porq el otro sistema con el mismo codigo lo envio y llega y el programa para abrir el correo es gmail mismo

Casimiro Notevi 03-01-2023 14:49:33

Yo lo leo con Thunderbird, y esto es lo que me llega:


IVAND 03-01-2023 14:59:43

te envie desde delphi 11 con el mismo codigo y veras q llega un pdf , para que veas la diferencia , pero si descargar el primer archivo de daras cuenta que se descarga con nomame si extension

Casimiro Notevi 03-01-2023 15:12:32

El anterior se guardó tal y como pone: Parte 1.2 y este como Ruc.pdf




IVAND 03-01-2023 15:34:29

que sera de poner adicional al codigo , es como que faltaria poner alguna opcion en codigo delphi 2009

Casimiro Notevi 03-01-2023 16:41:47

No entiendo lo que comentas, me parece entender que si pones Ruc.pdf llega bien y si pones Parte 1.2 entonces no llega bien, ¿es eso?

IVAND 03-01-2023 17:06:44

te explico mejor , tengo dos sistemas con exactamente el mismo codigo

1 delphi 2009 envio el archivo igual pero llega con el nombre de noname o como te llega a ti parte 1.2 (nombre original ruc.pdf)

2 delphi 11 mismo codigo de delphi 2009 llega perfecto con el adjunto como debe de ser ruc.pdf

por eso te indico q es como que en delphi 2009 falataria algun comando para q se suba bien el archivo

(en ambos delphi uso el mismo codigo exactamente igual y las mismas librerias para que funcione el ssl)

(nota en los dos sistemas el archivo que quiero enviar se llama ruc.pdf) pero desconosco el motivo porque en delphi 2009 se envia como noname , he buscado en varios sitios pero todos ponen lo mismo que he puesto yo

Casimiro Notevi 03-01-2023 17:08:33

¿Seguro, seguro, seguro... que es mismo código?

IVAND 03-01-2023 17:11:34

Exactamente copiado , linea a linea , es mas copi y pega de delphi 2009 a delphi 11 por eso pense que era algun error mio pero cuando se ejecuto en delphi 11 y se envio bien ya dije sera algo del 2009 o alguna cosa que falta en 2009 para que se adjunte bien

Casimiro Notevi 03-01-2023 18:05:27

El ejecutable creado con delphi 11 lo ejecutas donde está el delphi 9, debería funcionar igual que cuando lo ejecutas en el equipo donde está delphi 11
Debería funcionar igual.

IVAND 04-01-2023 15:37:34

Si , pero no lo hace igual ya he probado varios metodos y delphi 2009 lo envia igual es como si faltara terminar la carga

Casimiro Notevi 04-01-2023 16:00:28

Cita:

Empezado por IVAND (Mensaje 549805)
Si , pero no lo hace igual ya he probado varios metodos y delphi 2009 lo envia igual es como si faltara terminar la carga

No es eso lo que quiero indicar. El ejecutable, ya sea creado con delphi 2009 o delphi 11, es un ejecutable. ¿Acaso los usuarios ejecutan el programa desde delphi?
Si el ejecutable creado con delphi 11 funciona bien, entonces usa ese ejecutable en el otro equipo. ¿Acaso el ejecutable creado con delphi 2009, si lo ejecutas donde está el equipo con delphi 11 no funciona?

Hay algo que no está claro.

IVAND 04-01-2023 16:03:35

Lo que pasa que mi sistema esta todo en delphi 2009 y no queria poner un programa externo a enviar un correo , pero como van las cosas creo que tocara

Casimiro Notevi 04-01-2023 16:10:03

Cita:

Empezado por IVAND (Mensaje 549807)
Lo que pasa que mi sistema esta todo en delphi 2009 y no queria poner un programa externo a enviar un correo , pero como van las cosas creo que tocara

Sigo sin entender, ¿ejecutas desde delphi?

egostar 04-01-2023 16:21:13

Puedes crear una DLL con D11 y llamarla desde D2009.

Saludos

IVAND 04-01-2023 16:32:59

Eso no he echo nunca , pero tocara leer sobre este tema de dll me parece interesante

IVAND 04-01-2023 16:35:17

Casemiro , si ejecuto desde delphi pero lo queria hacer todo desde delphi 2009 , pero tocara hacerlo asi , no entiendo que sera porq sale con noname y sin extencion

IVAND 23-11-2023 19:41:27

1 Archivos Adjunto(s)
Talvez llego tarde pero ya esta la solucion a este problema de delphi 2009 es cambiar la clave IdMessageClient.pas en este foro antiguo esta como se hace o

En este foro se trato hace mucho tiempo pero yo tenia esta necesidad y listo , espero le sirva

Casimiro Notevi 23-11-2023 21:16:35

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 11:57:42.

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