Ver Mensaje Individual
  #6  
Antiguo 25-09-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
Smile Lo que te he averiguado

Cita:
Empezado por xio Ver Mensaje
Gracias por la rapidez, estoy avanzando algo pero me da errores que no tengo ni idea de como resolver, a ver si puedo encontrar algo de ayuda por ahi. Un saludo y suerte con tus problemillas!
Hola,

Como te prometí, aquí esta lo que he podido averiguarte hasta ahora:
Los mensajes se envían mediante objetos del tipo TIdSMTP. Este es un componente Indy disponible en la paleta Indy Clients. Cada mensaje se almacena en objetos del tipo TIdMessage. Este es un componente Indy disponible en la paleta Indy Misc.

Para definir el mensaje, las propiedades claves de TIdMessage son las siguientes:

Body : Esta propiedad es un TStringList que almacena el texto del mensaje
From : Esta propiedad es del tipo TIdEmailAddressItem, un tipo usado por Indy para definir direcciones. La prpoiedad indica el correo del que envía
Subject : Es un string con el título o asunto del mensaje
Recipients : Esta propiedad indica la lista de direcciones a donde se enviará el mensaje. Es del tipo TIdEmailAddressList, el cual es usado por Indy para manejar los TIdEmailAddressItem,

Lógicamente hay más; pero estas son las básicas.

El manejo de direcciones dado por TIdEmailAddressItem se maneja con 3 propiedades:

Address : La dirección de correo en sí
Name : El nombre asociado a esa dirección
Text : El texto usado para desplegar direcciones, o se 'Name <Address>'

Finalmente, el componente TIdSMTP se configura con base a 3 propiedades:

Port : El número del puerto (por default 25)
Host : La dirección IP o el nombre del servidor
AutheticationType : Usa atNone si no requiere autenticar, o si es requerido, usa atLogin, suministrando además las credenciales en las propiedades UserId y Password

Una vez definido lo anterior, hacer el envío requiere 3 métodos de TIdSMTP

a. Llamar al método Connect para establecer la conexión
b. Enviar el mensaje con el método Send
c. Garantizar el fin de la conexión con el método Disconnect

La siguiente rutina ilustra toda esta teoría:

Código Delphi [-]
procedure TForm1.BtnEnviarClick(Sender: TObject);
Var
   ElDestinatario:      TIdEmailAddressItem;
begin
     { Crea el Mensaje en IdEnviar, que es del tipo TIdMessage }
     IdEnviar.Body.Text     := 'Este es el texto a enviar';
     IdEnviar.From.Address  := 'elqueenvia@midominio.com'; { e-mail del que envía }
     IdEnviar.From.Name     := 'Pedro Perez'; { El nombre del que envía }
     IdEnviar.Subject       := 'Este es el título del mensaje';
     ElDestinatario         := IdEnviar.Recipients.Add;
     ElDestinatario.Address := 'destino1@dominio1.com'; { Primer destinatario }
     ElDestinatario.Name    := 'Nombre del primer destinario';
     ElDestinatario         := IdEnviar.Recipients.Add;
     ElDestinatario.Address := 'destino2@dominio2.com'; { Segundo destinatario }
     ElDestinatario.Name    := 'Nombre del segundo destinario';
     { Realiza el envío }
     ElIdSMTP.Port          := 25; { El Puerto }
     ElIdSMTP.AuthenticationType := atNone;
     { Si requiere Login debe ser atLogin en lugar de atNone y debe indicarse
       Usuario y Password así :
     ElIdSMTP.UserId             := 'Usuario1';
     ElIdSMTP.Password           := 'password1'; }
     ElIdSMTP.Host               := '200.89.96.4';  { La IP o El nombre del Host }
     Try
        ElIdSMTP.Connect;
        Try
           ElIdSMTP.Send(IdEnviar);
           ShowMessage('Enviado');
        Finally
           ElIdSMTP.Disconnect;
        End;
     Except
        On E:Exception Do Begin
           ShowMessage(E.Message);
        End;
     End;
end;
Coloco el puerto solo para ilustración, ya que el default es 25.

Observa el uso de la variable ElDestinatario para agregar uno a uno, un par de destinarios a la lista dada por Recipients. Es de anotar que TIdEmailAddressItem está definido en la unidad IdEMailAddress, por tanto, debes agregarla a clausula Uses.

El principal problema es determinar los parámetros correctos para las propiedades de TIdSMTP. Creo que ahí es donde estarán tús problemas.

Bueno, espero que esto te ayude

Saludos
Responder Con Cita