Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 15
apicito Va por buen camino
Problema con envio de correos con fichero adjunto

estoy intentando mandar correos con ficheros adjuntos y me envia correctamente el correo pero el adjunto no.
Utilizo esto código:
Código:
procedure TCorreoSmtp.EnviarMail;
var SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachmentFile;
   i: integer;
begin
  if trim(EDestinatario.Text)='' then begin
    Showmessage('Debe especificarse un destinatario');
    Exit;
  end;
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  try
    SMTP.Port := strtoint(sPort);
  except
    SMTP.Port := 25;
  end;
  SMTP.AuthType := satDEFAULT;       //satNONE, satDEFAULT, satSASL
  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.ReplyTo.EMailAddresses := sReplyTo;
  with TIdText.Create(Mensaje.MessageParts, nil) do begin
    for i := 0 To Memo.Lines.Count -1 do
      SMensaje := SMensaje + '<br>' + Memo.Lines[i];
    Body.Text := sMensaje;
    ContentType := 'text/html';
  end;
  Mensaje.From.Name := sFromNome;
  Mensaje.From.Address := sFromEmail;
  Mensaje.Subject := sAsunto;
  if trim(sCopia)<>'' then begin
    Mensaje.BccList.Add;
    Mensaje.BccList.Items[0].Address := sCopia;
  end;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;

  if (sAdjunto <> '') and (FileExists( sAdjunto )) then begin
    Adjunto := TIdAttachmentFile.Create(Mensaje.MessageParts, sAdjunto);
    Mensaje.ContentType := 'multipart/related';
  end else begin
    Adjunto := nil;
    Mensaje.ContentType := 'multipart/alternative';
  end;

  try
     SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor' );
  end;
  if SMTP.Connected then
  begin
     try
       SMTP.Send( Mensaje );
     except
       raise Exception.Create( 'Error al enviar el mensaje.' );
     end;
     try
        SMTP.Disconnect;
     except
       raise Exception.Create( 'Error al desconectar del servidor.' );
     end;
  end;
  if Adjunto <> nil then
     FreeAndNil( Adjunto );
  FreeAndNil( Mensaje );
  FreeAndNil( SMTP );
end;
Alguien ve algo raro en este código?
Un saludo.
Responder Con Cita
  #2  
Antiguo 08-02-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.882
Poder: 13
newtron Va camino a la fama
Hola, yo no lo hago exactamente así, no sé si será por la versión de las Indy.

Prueba de esta manera:

Código Delphi [-]
TIdAttachmentFile.Create(Mensaje.MessageParts, sAdjunto);

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 09-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 15
apicito Va por buen camino
He probado y si gue sin funcionar.
Supongo que la diferencia que me propones es no asignar la creación deTIdAttachmentFile a una variable?
Responder Con Cita
  #4  
Antiguo 09-02-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.882
Poder: 13
newtron Va camino a la fama
Hola de nuevo.

Este es mi código y funciona

Código Delphi [-]
  IdEnviar := TIdMessage.Create(Self);
  TextoMensaje:=Texto+#13+#10+Firma+#13+#10+TablaDatos.FieldByname('TEXTOMAIL').Value;
  IdEnviar.Body.Text     := TextoMensaje;
  IdEnviar.From.Address  := CorreoPropio; { e-mail del que envía }
  IdEnviar.From.Name     := DlgPropiedades.NombreEmpresa; { El nombre del que envía }
  IdEnviar.Subject       := Subject;

  TIdAttachmentFile.Create(IdEnviar.MessageParts, GetTempDir+'\DOCUMENTO.PDF'); //Para adjuntar archivos al mensaje

  ElDestinatario         := IdEnviar.Recipients.Add;
  ElDestinatario.Address := Correo; { Primer destinatario }
//  ElDestinatario.Name    := 'Nombre del primer destinario';
  If Copia<>'' then begin
    ElDestinatario         := IdEnviar.Recipients.Add;
    ElDestinatario.Address := Copia; { Primer destinatario }
  end;
  Bd.CierraTabla (TablaDatos);
  Application.ProcessMessages ;
  IdSMTP1.Host       := Host;
  IdSMTP1.UserName   := UserId;
  IdSMTP1.Password   := Pass;
  if Puerto<>0 then IdSMTP1.Port:= Puerto;
  Try
    IdSMTP1.Connect;
    try
      IdSMTP1.Send(idEnviar);
    finally

    end;

  except
     ShowMessage('¡ATENCION! Problema de conexion');
     Close;
  end;
  IdSMTP1.Disconnect(true);

Mira a ver si puedes probar con esto.
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 09-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 15
apicito Va por buen camino
Ya Está !!!
Solo he comentado las lineas "Mensaje.ContentType" y funcionó a la primera.
Código Delphi [-]
  // Si hay que meter un archivo adjunto lo creamos y lo asignamos al mensaje
  if (sAdjunto <> '') and (FileExists( sAdjunto )) then begin
    Adjunto := TIdAttachmentFile.Create(Mensaje.MessageParts, sAdjunto);
    //Mensaje.ContentType := 'multipart/related';
  end else begin
    Adjunto := nil;
    //Mensaje.ContentType := 'multipart/alternative';
  end;
Gracias por tu ayuda.
Responder Con Cita
  #6  
Antiguo 09-02-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.882
Poder: 13
newtron Va camino a la fama
Pues fíjate que pensé en decirte que hicieras eso pero pensé..."mejor se lo mando completo y no damos muchos cabezazos".

Me alegro que ya te funcione.

Saludos
__________________
Be water my friend.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en envío de mail con adjunto + Indy 10 agustibaldo Internet 8 23-01-2015 22:23:31
?Envio de correos ? jasmad Lazarus, FreePascal, Kylix, etc. 16 02-10-2012 16:45:02
Capturar error envio de correos con el evento OnFailedRecipient arante73 Internet 0 17-07-2007 11:05:54
Envio de Correos Masivo Esau Internet 2 10-04-2007 02:46:11
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 13:57:57


La franja horaria es GMT +2. Ahora son las 14:08:35.


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