Mira si te sirve de ejemplo:
Código Delphi
[-]function SendEmailIndy10(AEmailEnvio:string; AListaAdjuntos: TStringList;
AHostSMTP: string; APortSMTP: Integer;
AAsunto: string; ACuerpoMensaje: string;
ANombreUsuario: string; APasswordUsuario: string;
AFromText:string;
AListaParametros:TStrings;
AListaParamsDB:TStrings;
AListaParamsIMG:TStrings;
tls:TIdUseTLS;
sslVersion:TIdSSLVersion;
AFormatoPlano:boolean;
var outMessage:String;
procStatus:TidStatusEvent=nil): integer;
var
ServidorSMTP: TIdSmtp;
sslHandler: TIdSSLIOHandlerSocketOpenSSL;
Mensaje: TIdMessage;
idText: TIdText;
i: Integer;
TS:TStrings;
begin
Result := 0;
outMessage := '';
ServidorSMTP := TIdSmtp.Create(nil);
sslHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Mensaje := TIdMessage.Create(nil);
try
if Assigned(AListaParametros) then begin
ACuerpoMensaje := SustituirParametros(ACuerpoMensaje, AListaParametros);
end;
if Assigned(AListaParamsDB) then begin
ACuerpoMensaje := SustituirParametros(ACuerpoMensaje, AListaParamsDB);
end;
if Assigned(AListaParamsIMG) then begin
if not(AFormatoPlano) then ACuerpoMensaje := SustituirParametrosImagen(ACuerpoMensaje, AListaParamsIMG);
end;
try
ServidorSMTP.Host := AHostSMTP;
ServidorSMTP.Port := APortSMTP;
ServidorSMTP.Username := ANombreUsuario;
ServidorSMTP.Password := APasswordUsuario;
ServidorSMTP.ReadTimeout := 30000;
ServidorSMTP.OnStatus := procStatus;
if (tls <> utNoTLSSupport) then
begin sslHandler.Destination := AHostSMTP + ':' + IntToStr(APortSMTP);
sslHandler.Host := AHostSMTP;
sslHandler.Port := APortSMTP;
sslHandler.SSLOptions.Method := sslVersion;
sslHandler.ReadTimeout := 30000;
ServidorSMTP.IOHandler := sslHandler;
ServidorSMTP.UseTLS := tls;
end;
Mensaje.From.Address := ANombreUsuario;
Mensaje.From.Text := AFromText;
Mensaje.Recipients.EMailAddresses := AEmailEnvio;
Mensaje.Subject := AAsunto;
Mensaje.ContentType := 'multipart/mixed';
TS := TStringList.Create();
try
TS.Text := ACuerpoMensaje;
if (AFormatoPlano) then begin
idText := TIdText.Create(Mensaje.MessageParts, TS);
idText.ContentType := 'text/plain';
end
else begin
idText := TIdText.Create(Mensaje.MessageParts, TS);
idText.ContentType := 'text/html';
idText.ContentTransfer := '7bit';
Mensaje.ContentTransferEncoding := 'text/html';
end;
finally
FreeAndNil(TS);
end;
if Assigned(AListaAdjuntos) then begin
for i := 0 to (AListaAdjuntos.Count - 1) do begin
if FileExists(AListaAdjuntos[i]) then begin
TIdAttachmentFile.Create(Mensaje.MessageParts, AListaAdjuntos[i]);
end;
end;
end;
try
ServidorSMTP.Connect; try
ServidorSMTP.Send(Mensaje); Result := Result + ID_ENVIO_OK; except
on E:Exception do begin
Result := ID_ENVIO_ERROR_ENVIO ;
outMessage := rsErrorAlEnviar + E.Message;
end;
end;
except
on E:Exception do begin
Result := ID_ENVIO_ERROR_CONEXION ;
outMessage := rsErrorAlConectar + E.Message;
end;
end;
if (ServidorSMTP.Connected) then begin
ServidorSMTP.Disconnect; end;
finally
Mensaje.Free;
sslHandler.Free;
ServidorSMTP.Free;
end;
except
on E:exception do begin
Result := -1; outMessage := rsErrorDesconocido + E.Message;
end;
end;
end;