Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problemas con los INDY´s (https://www.clubdelphi.com/foros/showthread.php?t=60815)

mRoman 15-10-2008 03:15:42

Problemas con los INDY´s
 
Que tal amigos....

Estoy tratando de desarrollar una aplicacion que envie un e-mail con un archivo adjunto. Para esto uso Delphi 6 y obvio, estoy investigando como usar los Indys para realizar lo anterior.

Les explico mas lo que quiero hacer, tengo una tabla EMPLEADO la cual tiene un campo que almacena la direccion de correo electronico...que por cierto es un dominio de una depedencia del gobierno federal (en México), hagan de cuenta q la cuenta se compone mas o menos asi:empleado@liconsa.gob.mx. Bueno....quiero que esta aplicacion lance correo a ciertos empleados o a todos no importa eso, de manera automatica, ya tengo resuelto que la aplicacion se ejecute automaticamente, ahora me falta mandar los correos.

He estado visitando varios temas que hablan de como mandar e-mails, y me encontre codigos muy interesantes, los cuales trate de aplicar a lo q estoy desarrollando....pero existen algunas propiedades que no me salen en IdMessage...como los que siguen:

Código Delphi [-]
      IdMessage.From.Address  :=  edUser.Text;
      IdMessage.From.Name     :=  edName.Text;
      IdMessage.Body          :=  meBody.Lines;
      IdMessage.Subject       :=  edSubject.Text;
      IdMessage.Recipients.EMailAddresses       := edFor.Text;

Hice lo anterior....pero las propiedas "From", "Body", "Subject"...no me aparecen en el componente.....no sé como revisar la version de los Indys, pero no los he actualizado, desde q instale delphi.

En el uses....tengo esto:
Código Delphi [-]
unit Enviando;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdMessage, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, DB,
  IBCustomDataSet, IBQuery;

Bueno, mejor les paso lo que llevo....:

Código Delphi [-]
unit Enviando;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdMessage, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, DB,
  IBCustomDataSet, IBQuery;

type
  TfrmEnviando = class(TForm)
    Panel1: TPanel;
    ScrollBox1: TScrollBox;
    lblMensaje: TLabel;
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    qryCorreos: TIBQuery;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmEnviando: TfrmEnviando;

implementation
uses modBDEnvios;
{$R *.dfm}

procedure TfrmEnviando.FormShow(Sender: TObject);
begin
     idSMTP1.Host:='liconsa.gob.mx';
     idSMTP1.UserId:='MVARGAS';
     idSMTP1.Password:='';
     if not idSMTP1.Connected then
         idSMTP1.Connect;
     idMessage.
end;

end.

Alguien me podria decir que sucece....?, Aparte le agrego en el uses dAttachmentFile y marca un error, que no localiza el DCU de este archivo...ahi ya se que me falta....realice busqueda en el disco duro...y nada.

talvez sea la version de los Indys.

Dentro de la empresa utilizamos una aplicacion para enviar correos (GroupWise), y lo que quiero hacer es....que la aplicacion les mande el correo para que lo puedan revisar en el GroupWise.

Si necesitan mas informacion...me comentan.

Les paso el codigo q me encontre...

Código Delphi [-]
unit SendMail;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, StdCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
  IdSMTPBase, IdSMTP, IdMessage, IdAttachmentFile;

type
  TSendMailFrm = class(TForm)
    GroupBox1: TGroupBox;
    edFor: TEdit;
    Label1: TLabel;
    edSubject: TEdit;
    Label2: TLabel;
    meBody: TMemo;
    Label3: TLabel;
    btSend: TButton;
    btClose: TButton;
    IdSMTP: TIdSMTP;
    IdMessage: TIdMessage;
    OpenDialog: TOpenDialog;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btCloseClick(Sender: TObject);
    procedure btSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  SendMailFrm: TSendMailFrm;

implementation

uses ConfMail;

{$R *.dfm}

procedure TSendMailFrm.btSendClick(Sender: TObject);
begin
  if ConfMailFrm.ShowModal = mrOk then
  begin
    with ConfMailFrm do
    begin
      IdSMTP.Host     :=  edServer.Text;
      IdSMTP.Username :=  edUser.Text;
      IdSMTP.Password :=  edPassword.Text;
      if not IdSMTP.Connected then
        IdSMTP.Connect;

      IdMessage.From.Address  :=  edUser.Text;
      IdMessage.From.Name     :=  edName.Text;
      IdMessage.Body          :=  meBody.Lines;
      IdMessage.Subject       :=  edSubject.Text;
      IdMessage.Recipients.EMailAddresses       := edFor.Text;

      if OpenDialog.Execute then
        TIdAttachmentFile.Create(IdMessage.MessageParts, OpenDialog.FileName);

      IdSMTP.Send(IdMessage);
    end;
  end;
end;

procedure TSendMailFrm.btCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TSendMailFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action  :=  caFree;
end;

end.

Caro 15-10-2008 04:44:32

Hola mRoman, la unit IdAttachmentFile pertenece a las Indy 10, seguramente tienes una versión mas antigua.

Donde en vez de utilizar TIdAttachmentFile es TIdAttachment sin añadir ninguna unidad en uses.

Código Delphi [-]
.....
TIdAttachment.Create(IdMessage.MessageParts, OpenDialog.FileName);
....

Saluditos

mRoman 15-10-2008 05:11:32

Gracias CARO por tu respuesta....y por tu orientacion.

Ya supe como ver la version que tengo de los componentes Indy...tengo la 8.0, pregunta para todos....trabajo con Delphi 6, creen que si actualizo a la Version 9 o 10 trabaje bien con delphi 6?

Gracias....Caro y a los demas que me ayuden.

mRoman 15-10-2008 06:07:29

idMessage...corregido!
 
Cita:

Empezado por Caro (Mensaje 320153)
Hola mRoman, la unit IdAttachmentFile pertenece a las Indy 10, seguramente tienes una versión mas antigua.

Donde en vez de utilizar TIdAttachmentFile es TIdAttachment sin añadir ninguna unidad en uses.

Código Delphi [-]
.....
TIdAttachment.Create(IdMessage.MessageParts, OpenDialog.FileName);
....

Saluditos

Listo....!!! ya salieron las propiedades, resulta que estaba tecleando mal el nombre del componente, tenia esto "idMessage", y esto es incorrecto ya que el componente le deje en la propiedad "name" el nombre que sugiere, que es el de "idMessage1"....o sea me hacia falta el 1....QUE BABAS !!!...asi pasa cuando estas tanto rato en esto....errores tan absurdos como este son los que no te dejan ver el error propiamente.

Ahora marca este error....

EIdProtocolReplyError

Les paso el codigo que tengo....
Código Delphi [-]
procedure TfrmEnviando.FormShow(Sender: TObject);
begin
     frmMenuE.Timer1.Enabled:=False;
     qryCorreos.Close;
     qryCorreos.Open;
     idSMTP1.Host:='empresa@gob.mx';
     idSMTP1.UserId:='MVARGAS';
     idSMTP1.Password:='';
     if not idSMTP1.Connected then
         idSMTP1.Connect;
//     TIdAttachment.Create(idMessage1.MessageParts,'c:\numeralia.xls');
     idMessage1.From.Address:='empleado@empresa.gob.mx';
     idMessage1.From.Name:='Miguel';
     idMessage1.Body.Add('Numeralia-2008');
     idMessage1.Subject:='SIDIST Liquida-NUMERALIA';
     idMessage1.Recipients.EMailAddresses:=qryCorreos.fieldbyname('DIRECCION_EMAIL').AsString;
     TidAttachment.Create(idMessage1.MessageParts,'c:\numeralia.xls');
     idSMTP1.Send(idMessage1);
end;

Estaré buscando que siginifica este error....

GRACIAS POR SUS APORTACIONES....

Caro 15-10-2008 14:50:18

Hola de nuevo, si te cambias a Indy 9 o 10 creo que no deberías tener problemas, sobre tu codigo, para enviar correo tienes que utilizar el protocolo smtp, donde indicas el Host desbes colocar el nombre de tu servidor smtp por el que quieres enviar correo.

Código Delphi [-]
 ............
 idSMTP1.Host:='empresa@gob.mx'; //tendría que ser algo asi 'smtp.gob.mx'
...............

Saluditos

mRoman 15-10-2008 16:39:26

Ok...gracias....por tu orientacion....verificare como se llama el HOST....

Fijate, que ya pude hechar a andar el programa, pero me marca un error en el socket...

Socket Error #11001...seguire buscando el porq de este error.

Caro 15-10-2008 17:39:53

Cita:

Empezado por mRoman (Mensaje 320235)
Socket Error #11001...

Seguramente el error completo es "Socket Error #11001 Host not found" y te sale ese error porque el servidor smtp que colocas en la propiedad Host no existe.

Saluditos

mRoman 16-10-2008 02:00:00

Fijate que no me dice eso, me dice Socket Error #11060 Connection timed out, ....

Tu o alguien sabe cual es el host para hotmail?, para realizar un ejemplo y mandarme un correo a esa cuenta?

Gracias Caro por tu apoyo....


La franja horaria es GMT +2. Ahora son las 09:01:14.

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