Función para enviar un email - Delphi
Lenguaje de programación Borland Delphi
Con esta unidad realizada con Delphi 6 podremos enviar un email a uno o varios destinatarios. Permite la utilización de servidores de email que requieren autenticación para el envío. Para utilizarla añada una unidad a su proyecto, desde el menú "File" - "New" - "Unit" y copie el siguiente código en la unidad creada:
unit UnidadProcedimientos;
interface
uses IdHTTP, Classes, SysUtils, IdSMTP, IdMessage, windows;
function ConectarServidorEmail (servidor : string; usuario : string; puerto : integer) : boolean;
function enviarEmail (servidor : string; usuario : string; contrasena : string;
puerto : integer; asunto : string; mensaje : TStringList; conAutenticacion : boolean;
emisor : string; nombreEmisor : string; destinatario : string; cc : string) : boolean;
implementation
var
compEnvioEmail : TIdSMTP;
//Función para conectar con el servidor de email
function ConectarServidorEmail (servidor : string; usuario : string; puerto : integer) : boolean;
begin
compEnvioEmail := TIdSMTP.Create(nil);
compEnvioEmail.host := servidor;
compEnvioEmail.userid := usuario;
compEnvioEmail.Port := puerto;
try
compEnvioEmail.connect;
except
compEnvioEmail.Free;
ConectarServidorEmail := false;
end;
end;
//enviar email
function enviarEmail (servidor : string; usuario : string; contrasena : string;
puerto : integer; asunto : string; mensaje : TStringList; conAutenticacion : boolean;
emisor : string; nombreEmisor : string; destinatario : string; cc : string) : boolean;
var
compMensaje : TIdMessage;
textoTemp : string;
tipoAutenticacion : TAuthenticationType;
envioCorrecto : boolean;
begin
if conAutenticacion then
begin
compEnvioEmail.AuthenticationType := atLogin;
compEnvioEmail.UserId := usuario;
compEnvioEmail.Password := contrasena;
end
else
compEnvioEmail.AuthenticationType := atNone;
compMensaje := TIdMessage.Create (nil);
compMensaje.From.Address := emisor;
compMensaje.From.Name := nombreEmisor;
compMensaje.Recipients.Add.Address := destinatario;
compMensaje.CCList.Add.Address := cc;
compMensaje.Body.AddStrings (mensaje);
compMensaje.Subject := asunto;
compMensaje.ReplyTo.Add.Address := emisor;
envioCorrecto := true;
try
compEnvioEmail.Send(compMensaje);
except
envioCorrecto := false;
end;
compMensaje.Free;
enviarEmail := envioCorrecto;
end;
end.
Un ejemplo de utilización: ...
vtMensajeTexto := TStringList.Create;
vtMensajeTexto.Add('Cuerpo del mensaje.');
vtMensajeTexto.Add('');
vtMensajeTexto.Add('');
vtMensajeTexto.Add('');
vtMensajeTexto.Add('Por AjpdSoft');
if ConectarServidorEmail ('mail.servidor.com', 'usuario@ajpdsoft.com', 25) then
begin
if enviarEmail('mail.servidor.com', 'usuario@ajpdsoft.com', 'contraseña', 25,
'El asunto del email', vtmensajeTexto, true, 'emaildelemisor@ajpdsoft.com',
'Nombre del emisor', 'destinatario@ajpdsoft.com, copiacarbon@ajpdsoft.com) then
showmessage ('Mensaje enviado correctamente.')
else
showmessage ('El mensaje no se ha enviado.');
end
else
showmessage ('No se ha podido conectar con el servidor de email.');
...
1 comentarios:
ya lo implemente pero me marca el mismo error que cuando lo hago directo con los componentes tidsmtp
el error es el siguiente
'Connection close Gracefully'
como se puede solucionar esto
Publicar un comentario