Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2014
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Mandar email con adjunto

Hola compañeros, podíais facilitarme el trozo de código que manda un email con un adjunto, lo tenia, pero un virus ataco a mi equipo y he perdido un montón de cosas

he probado con un montón de códigos y los mensajes de error son de lo mas diversos y no he logrado sacar ni un triste email y llevo horas y nada, asi que prefiero solicitar ayuda, antes de que me duela más la cabeza.

Lo que quiero hacer por si os vale de ayuda, es lo siguiente.

1º) se selecciona si quiero mandar un email (ok)
2º) si es así, crea del documento un archivo Pdf (oK)
3º) Paso los datos a un formulario para mandar el email, los datos son:
El email ,El asunto, la ruta del archivo, el nombre del archivo y el cuerpo del mensaje
Para llegar a este paso el cliente debe tener email (ok todo)
4) Pulso el botón mandar email, aquí lo primero que hace es comprobar si debemos mandar el texto de la ley de protección de datos (mediante un simple checkbox OK)
coge nuestros datos de la bd. configuración, Nombre de usuario, Email, Servidor en este caso 'smtp.gmail.com' y por último la contraseña (ok)
Y aquí es donde falla, salir el email

Como siempre siempre agradezco vuestra ayuda
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 03-03-2014
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Código Delphi [-]
IdMessage2.ClearBody;
IdMessage2.Recipients.EMailAddresses:='correo@correo.es';
IdMessage2.Subject:='Asunto';
IdMessage2.Priority:=MpNormal;
IdMessage2.From.Text:='micorreo@micorreo.es';
IdMessage2.Body.Text:='Cuerpo';
TIdAttachmentFile.create(IdMessage2.MessageParts,'C:\Adjunto.pdf');
try
IdSMTP2.Connect;
try
IdSMTP2.Send(IdMessage2);
Finally
IdSMTP2.Disconnect;
end;

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 03-03-2014
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
ElDioni gracias, pero sigue sin funcionar, e incluso he probado con la configuración de mi correo en vez del Gmail y no hay manera.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 03-03-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola.

Te envío un trozo de código de lo que yo uso, usando SSL. Si algo no ves claro me preguntas.

Saludos

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

  ListaDestinatarios:=CargaRegistro(Correo,';');

  for N := 0 to ListaDestinatarios.Count - 1 do begin
    ElDestinatario         := IdEnviar.Recipients.Add;
    ElDestinatario.Address := ListaDestinatarios[N]; { Primer destinatario }
  end;
//  ElDestinatario.Name    := 'Nombre del primer destinario';
  If Copia<>'' then begin
    ElDestinatario         := IdEnviar.Recipients.Add;
    ElDestinatario.Address := Copia; { Primer destinatario }
  end;
  Application.ProcessMessages ;
  IdSMTP1.Host       := Host;
  IdSMTP1.UserName   := UserId;
  IdSMTP1.Password   := Pass;

  if Puerto<>0 then IdSMTP1.Port:= Puerto;

  if(TablaDatos.FieldByName('TLSMAIL').AsString<>'') and (Copy(TablaDatos.FieldByName('TLSMAIL').AsString,1,1)<>'1') then begin
    idSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL;
    if Copy(TablaDatos.FieldByname('TLSMAIL').AsString,1,1)='2' then begin
      idSMTP1.UseTLS := utUseExplicitTLS;
    end else if Copy(TablaDatos.FieldByname('TLSMAIL').AsString,1,1)='3' then begin
      idSMTP1.UseTLS := utUseImplicitTLS;
    end else if Copy(TablaDatos.FieldByname('TLSMAIL').AsString,1,1)='4' then begin
      idSMTP1.UseTLS := utUseRequireTLS;
    end else begin
      idSMTP1.UseTLS := utNoTLSSupport;
    end;
//    IdSSLIOHandlerSocketOpenSSL.Host :=TablaDatos.FieldByname('HOSTCO').AsString;
//    IdSSLIOHandlerSocketOpenSSL.Destination :=TablaDatos.FieldByname('HOSTCO').AsString+':'+IntToStr(IdSMTP1.Port);
  end;
  Bd.CierraTabla (TablaDatos);

  Try
    IdSMTP1.Connect;
    try
      IdSMTP1.Send(idEnviar);
    finally

    end;

  except
raise;
     ShowMessage('¡ATENCION! Problema de conexion');
     Close;
  end;
  IdSMTP1.Disconnect(true);
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 04-03-2014
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
hola compañeros agradezco vuestra ayuda, pero no logro que tire, el error que más me sale es



e puesto un componente IdSSLIOHandlerSocketOpenSSL vinculado a mi IDSMTP y la propiedad UseTLS en sus diferentes modos y nada, la verdad es que me tiene totalmente parado ya que es una parte fundamental en el trabajo que estoy haciendo, así que os pido ayuda nuevamente

Así es como paso los datos



Y así es el form en diseño con los componentes que veis únicamente

__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 04-03-2014
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
siguiendo dando vueltas al tema, he vuelto a la función que se que me funciona, que es

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
function EnviarEmail(aData, aHora : TDateTime; aHost, aLogin, aSenha,aListaEmail, aAssunto, aCorpo : String; Mifile:string) : Boolean;
var
  IdSMTP    : TIdSMTP;
  IdMessage : TIdMessage;
  Cabecalho: string;
begin
  Cabecalho:= '';
  Result:= False;
  IdSMTP    := TIdSMTP   .Create(nil);
  IdMessage := TIdMessage.Create(nil);
  try
    IdSMTP.Host:= aHost;
    IdSMTP.AuthType:= satDefault;
    IdSMTP.Username:= aLogin;
    IdSMTP.Password:= aSenha;
    IdSMTP.Connect;

    IdMessage.From.Address:= aLogin;
    IdMessage.Recipients.EMailAddresses:= aListaEmail;
    IdMessage.Subject:= aAssunto;
    IdMessage.Body.Text:='Data: '+DateToStr(aData)+#13#10+'Hora: '+TimeToStr(aHora)+#13#10+ aCorpo;
    IdMessage.MessageParts.Clear;
    if Mifile<>'' then TIdAttachmentFile.Create(IdMessage.MessageParts,Mifile);
    try
      IdSMTP.Send(IdMessage);
    except
      on E: Exception do
        begin
          MessageDlg('Error al intentar enviar este correo '+#13#10+e.Message,mtWarning,[mbok],0);
          Exit;
        end;
    end;
  finally
    IdSMTP   .Disconnect;
    IdSMTP   .Free;
    IdMessage.Free;
  end;
  Result:= True;
end;

begin                      //Servido Email     Correo Origen   //Clave Origen    Correo Destino          Asunto    Mensaje

//    EnviarEmail(Date,Time, 'smtp.eresmas.com','Desart@eresmas.com','xxx', 'info@jl68.es','Evido de email','Enviando email via programa��o utilizando os recursos da poderosa paleta indy',fichero);
    EnviarEmail(Date,Time, 'smtp.eresmas.com','Desart@eresmas.com','xxx', Edit1.text,Edit2.Text,Memo1.Lines.Text,fichero);
end;

a esta le he añadido para adjuntar ficheros en mifile con esta única linea

Código Delphi [-]
    if Mifile<>'' then TIdAttachmentFile.Create(IdMessage.MessageParts,Mifile);

y me sale el error



que como veis es totalmente diferente, en cambio si lo mando sin fichero, funciona perfectamente, siempre y cuando no lo mande desde una cuenta Gmail, en la que me da el error antes comentado.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



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
¿como eliminar adjunto en email indy 9 delphi 7? JXJ Varios 0 03-02-2013 02:45:49
Nombre del adjunto en un eMail gcaffe Varios 4 24-10-2010 01:10:40
Fast Repost 4 Email + PDF adjunto ajgomezlopez Impresión 5 29-12-2008 20:22:24
Enviar un email con un archivo adjunto Turboleta Internet 9 31-07-2006 19:55:16
Enviar email con copia y adjunto con indy cmena Internet 4 01-10-2005 01:14:00


La franja horaria es GMT +2. Ahora son las 20:25:13.


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
Copyright 1996-2007 Club Delphi