Cita:
Empezado por xio
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
IdEnviar.Body.Text := 'Este es el texto a enviar';
IdEnviar.From.Address := 'elqueenvia@midominio.com';
IdEnviar.From.Name := 'Pedro Perez';
IdEnviar.Subject := 'Este es el título del mensaje';
ElDestinatario := IdEnviar.Recipients.Add;
ElDestinatario.Address := 'destino1@dominio1.com';
ElDestinatario.Name := 'Nombre del primer destinario';
ElDestinatario := IdEnviar.Recipients.Add;
ElDestinatario.Address := 'destino2@dominio2.com';
ElDestinatario.Name := 'Nombre del segundo destinario';
ElIdSMTP.Port := 25;
ElIdSMTP.AuthenticationType := atNone;
ElIdSMTP.Host := '200.89.96.4';
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