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.');
...
Publicado el: 2005-02-08