PDA

Ver la Versión Completa : Email con los componentes Indy


Kamikaze
16-11-2004, 16:32:49
¿Alguien tiene algun codigo para enviar emails con los componentes indy?
Por que los componentes de fast net no los trae delphi 7
(si los trae pero no funcionan:( )

Muchas Gracias.


P.D.: Por si acaso lo sepa alguien yo lo pregunto...
¿Alguien sabe el puerto (25 creo) y la direccion de hotmail para enviar un email al propio hotmail? o ¿Alguien sabe de algun servidor que lo pueda hacer?.

roman
16-11-2004, 16:42:32
¿Alguien tiene algun codigo para enviar emails con los componentes indy?


En el hilo anterior (http://www.clubdelphi.com/foros/showthread.php?t=16017) que abriste al respecto de FastNet ya te había puesto un enlace (http://www.clubdelphi.com/foros/showthread.php?t=8343&highlight=idsmtp) a un hilo donde Nuria detalla los pasos a seguir.

// Saludos

Kamikaze
18-11-2004, 18:20:38
Lo volvi a preguntar por que me daba un monton de errores
(creo que el fallo esta en las uses pero intento buscar con el "Find in Files..." del menú "Search" y me salen una burrada.... pero por si acaso, las meti todas; (manera bestia) y me sigue saliendo los mismos errores...).

P.D.:Uso delphi 7, ¿sera por eso?.


Os dejo los mensajes de error para que los veais:

1º el codigo...

uses IdSmtp, IdMessage,

procedure TForm1.Button1Click(Sender: TObject);
begin
with idMessage do begin
// Cuerpo del mensaje.
Body.Clear;
Body.Add('Aqui añades el cuerpo del mensaje');
// Cuenta Origen.
From.Text := EMAILORIGEN;
// Cuenta Destino.
Recipients.EMailAddresses := EMAILDESTINO;
// Asunto del email.
Subject := ASUNTO;
// Prioridad del mensaje, ALTA.
Priority := TidMessagePriority(mpHighest);
// Coloco el archivo adjunto el cual enviar.
TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO);
end;
with idSMPT do begin
// Configuro autentificación.
AuthenticationType := atLogin;
Username := USERNAME; // Nombre del usuario
Password := PASS; // la password
// Configuro el servidor SMTP.
Host := HOST;
Port := PUERTO;

try
Connect;
try
// Envio el mensaje.
Send(idMenssage);
finally
Disconnect;
end;
Msg('Enviado Correctamente');
except
// Capturo algunas excepciones que pueden ocurrir
ON E: EIdProtocolReplyError do begin
Msg('No se ha podido enviar el email.' + #13 +
'Incorrecto el email o el usuario o la password.');
end;
on E: EFOpenError do begin
Msg('No se ha podido enviar el email.' + #13 +
'Fichero Adjunto desconocido o erróneo.');
end;
on E: EIdSocketError do begin
Msg('No se ha podido enviar el email.'+ #13 +
'Host desconocido o incorrecto.');
end
else begin
Msg('Fallo en el envio de email');
end;
end;
if connected then Disconnect;
end
end.



2º Los errores:

[Error] Unit1.pas(30): '.' expected but 'DO' found
[Error] Unit1.pas(32): Undeclared identifier: 'Body'
[Error] Unit1.pas(33): Missing operator or semicolon
[Error] Unit1.pas(35): Missing operator or semicolon
[Error] Unit1.pas(37): Undeclared identifier: 'Recipients'
[Error] Unit1.pas(39): Undeclared identifier: 'Subject'
[Error] Unit1.pas(41): Undeclared identifier: 'Priority'
[Error] Unit1.pas(43): Undeclared identifier: 'idMensage'
[Error] Unit1.pas(43): 'END' expected but ',' found
[Error] Unit1.pas(45): Declaration expected but 'WITH' found
[Error] Unit1.pas(47): Undeclared identifier: 'AuthenticationType'
[Error] Unit1.pas(48): Undeclared identifier: 'Username'
[Error] Unit1.pas(49): Undeclared identifier: 'Password'
[Error] Unit1.pas(52): Undeclared identifier: 'Port'
[Error] Unit1.pas(55): Undeclared identifier: 'Connect'
[Error] Unit1.pas(58): Undeclared identifier: 'Send'
[Error] Unit1.pas(60): Undeclared identifier: 'Disconnect'
[Error] Unit1.pas(62): Invalid typecast
[Error] Unit1.pas(65): Undeclared identifier: 'EIdProtocolReplyError'
[Error] Unit1.pas(67): Invalid typecast
[Error] Unit1.pas(71): Invalid typecast
[Error] Unit1.pas(73): Undeclared identifier: 'EIdSocketError'
[Error] Unit1.pas(75): Invalid typecast
[Error] Unit1.pas(78): Invalid typecast
[Error] Unit1.pas(81): Undeclared identifier: 'connected'




:) Muchas gracias a todos los que habeis desperdiciado un poco de tiempo en mi... :)

TDworD
18-11-2004, 20:00:58
Aqui te pongo un ejemplo de una función que tengo para enviar correos con componentes INDY

En este caso las variables globales que utilizan la función son lo siguiente:

G_HostMail: dirección del servidor SMTP, como el que viene en el outlook
G_UserMail: Usuario de conexión del correo
G_PasswordMail: Password del usuario de correo
G_ReplyMail: Dirección de respuesta del correo


Function TDM.EnviarCorreo(Para:String;Asunto:String;Contenido:TStrings):boolean;
begin
try
//Comprobamos los datos para enviar el correo
if Para=''
then Error('No se ha introducido un destinatario para el correo');
if G_HostMail=''
then Error('Debe introducir un Host de correo en la configuración');
if G_UserMail=''
then Error('Debe introducir un usuario de correo en la configuración');
//Configuramos el correo
Correo.Clear;
Correo.Body.AddStrings(Contenido);
Correo.Recipients.EMailAddresses:=Para;
Correo.Subject:=Asunto;
Correo.From.Text:=G_ReplyMail;
SMTP.Host:= G_HostMail;
SMTP.UserId:= G_UserMail;
SMTP.Password:= G_PasswordMail;
//Enviamos el correo
SMTP.Connect;
SMTP.Send(Correo);
SMTP.Disconnect;
result:=true;
except
result:=false;
end;
end;

Aprobecho el tema para hacer dos preguntillas (no se si ha salido ya en un post anterior, si es así perdonadme pero ahora no he podido mirarlo, decidmelo y lo buscaré a ver)

¿Como puedo enviar un anexo con el componente? ¿Compo puedo enviar el correo como HTML?

maeyanes
18-11-2004, 21:46:36
Os dejo los mensajes de error para que los veais:

1º el codigo...


uses IdSmtp, IdMessage,

procedure TForm1.Button1Click(Sender: TObject);
begin
with idMessage do begin // <-- [Error] Unit1.pas(30): '.' expected but 'DO' found.
// Estás usando el nombre de la unidad como nombre del componente u objeto.
// Cuerpo del mensaje.
Body.Clear;
Body.Add('Aqui añades el cuerpo del mensaje');
// Cuenta Origen.
From.Text := EMAILORIGEN;
// Cuenta Destino.
Recipients.EMailAddresses := EMAILDESTINO;
// Asunto del email.
Subject := ASUNTO;
// Prioridad del mensaje, ALTA.
Priority := TidMessagePriority(mpHighest);
// Coloco el archivo adjunto el cual enviar.
TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO);
end;
with idSMPT do begin
// Configuro autentificación.
AuthenticationType := atLogin;
Username := USERNAME; // Nombre del usuario
Password := PASS; // la password
// Configuro el servidor SMTP.
Host := HOST;
Port := PUERTO;

try
Connect;
try
// Envio el mensaje.
Send(idMenssage);
finally
Disconnect;
end;
Msg('Enviado Correctamente');
except
// Capturo algunas excepciones que pueden ocurrir
ON E: EIdProtocolReplyError do begin
Msg('No se ha podido enviar el email.' + #13 +
'Incorrecto el email o el usuario o la password.');
end;
on E: EFOpenError do begin
Msg('No se ha podido enviar el email.' + #13 +
'Fichero Adjunto desconocido o erróneo.');
end;
on E: EIdSocketError do begin
Msg('No se ha podido enviar el email.'+ #13 +
'Host desconocido o incorrecto.');
end
else begin
Msg('Fallo en el envio de email');
end;
end;
if connected then Disconnect;
end
end.


:) Muchas gracias a todos los que habeis desperdiciado un poco de tiempo en mi... :)

Resolviendo el error que te marqué... debes poder corregir casi todos los demás errores...