Componentes.Terceros.UserCo.../internal/2.31RC1/1/Source/UCMail.pas
david cc4a514b7b - Compilación para D2009
- UCBase.pas -> Modificado el formato de las fechas de 'dd/mm/yyyy' a 'mm/dd/yyyy' para que funcione con Firebird.
- UCBase.pas -> Cuando se llama a DelCurrentUser comprobar que realmente hay un usuario registrado.

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.UserControl@22 970f2627-a9d2-4748-b3d4-b5283c4fe7db
2009-03-01 17:39:41 +00:00

318 lines
10 KiB
ObjectPascal
Raw Permalink Blame History

{-----------------------------------------------------------------------------
Unit Name: UCMail
Author: QmD
Date: 09-nov-2004
Purpose: Send Mail messages (forget password, user add/change/password force/etc)
History: included indy 10 support
-----------------------------------------------------------------------------}
unit UCMail;
interface
{.$I 'UserControl.inc'}
uses
Classes,
Dialogs,
UCALSMTPClient,
SysUtils,
UcConsts_Language;
type
TUCMailMessage = class(TPersistent)
private
FAtivo: Boolean;
FTitulo: String;
FLines: TStrings;
procedure SetLines(const Value: TStrings);
protected
public
constructor Create(AOwner: TComponent);
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
published
property Ativo: Boolean read FAtivo write FAtivo;
property Titulo: String read FTitulo write FTitulo;
property Mensagem: TStrings read FLines write SetLines;
end;
TUCMEsqueceuSenha = class(TUCMailMessage)
private
FLabelLoginForm: String;
FMailEnviado: String;
protected
public
published
property LabelLoginForm: String read FLabelLoginForm write FLabelLoginForm;
property MensagemEmailEnviado: String read FMailEnviado write FMailEnviado;
end;
TMessageTag = procedure(Tag: String; var ReplaceText: String) of object;
TMailUserControl = class(TComponent)
private
FPorta: Integer;
FEmailRemetente: String;
FUsuario: String;
FNomeRemetente: String;
FSenha: String;
FSMTPServer: String;
FAdicionaUsuario: TUCMailMessage;
FSenhaTrocada: TUCMailMessage;
FAlteraUsuario: TUCMailMessage;
FSenhaForcada: TUCMailMessage;
FEsqueceuSenha: TUCMEsqueceuSenha;
fAuthType: TAlSmtpClientAuthType;
function ParseMailMSG(Nome, Login, Senha, Email, Perfil, txt: String): String;
function TrataSenha(Senha: String; Key: Word): String;
procedure onStatus(Status: String);
protected
procedure EnviaEmailTp(Nome, Login, USenha, Email, Perfil: String; UCMSG: TUCMailMessage);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure EnviaEmailAdicionaUsuario(Nome, Login, Senha, Email, Perfil: String; Key: Word);
procedure EnviaEmailAlteraUsuario(Nome, Login, Senha, Email, Perfil: String; Key: Word);
procedure EnviaEmailSenhaForcada(Nome, Login, Senha, Email, Perfil: String);
procedure EnviaEmailSenhaTrocada(Nome, Login, Senha, Email, Perfil: String; Key: Word);
procedure EnviaEsqueceuSenha(Nome, Login, Senha, Email, Perfil: String; Key: Word);
published
property AuthType : TAlSmtpClientAuthType read fAuthType write fAuthType;
property ServidorSMTP: String read FSMTPServer write FSMTPServer;
property Usuario: String read FUsuario write FUsuario;
property Senha: String read FSenha write FSenha;
property Porta: Integer read FPorta write FPorta default 0;
property NomeRemetente: String read FNomeRemetente write FNomeRemetente;
property EmailRemetente: String read FEmailRemetente write FEmailRemetente;
property AdicionaUsuario: TUCMailMessage read FAdicionaUsuario write FAdicionaUsuario;
property AlteraUsuario: TUCMailMessage read FAlteraUsuario write FAlteraUsuario;
property EsqueceuSenha: TUCMEsqueceuSenha read FEsqueceuSenha write FEsqueceuSenha;
property SenhaForcada: TUCMailMessage read FSenhaForcada write FSenhaForcada;
property SenhaTrocada: TUCMailMessage read FSenhaTrocada write FSenhaTrocada;
end;
implementation
uses
UCBase,
UCEMailForm_U;
{ TMailAdicUsuario }
procedure TUCMailMessage.Assign(Source: TPersistent);
begin
if Source is TUCMailMessage then
begin
Self.Ativo := TUCMailMessage(Source).Ativo;
Self.Titulo := TUCMailMessage(Source).Titulo;
Self.Mensagem.Assign(TUCMailMessage(Source).Mensagem);
end
else
inherited;
end;
constructor TUCMailMessage.Create(AOwner: TComponent);
begin
FLines := TStringList.Create;
end;
destructor TUCMailMessage.Destroy;
begin
SysUtils.FreeAndNil(FLines);
inherited;
end;
procedure TUCMailMessage.SetLines(const Value: TStrings);
begin
FLines.Assign(Value);
end;
{ TMailUserControl }
constructor TMailUserControl.Create(AOwner: TComponent);
begin
inherited;
AdicionaUsuario := TUCMailMessage.Create(self);
AdicionaUsuario.FLines.Add('Inclus<75>o de usu<73>rio');
AdicionaUsuario.FLines.Add('');
AdicionaUsuario.fLines.Add('Nome...: :nome');
AdicionaUsuario.fLines.Add('Login..: :login');
AdicionaUsuario.fLines.Add('Senha..: :senha');
AdicionaUsuario.fLines.Add('Email..: :email');
AdicionaUsuario.fLines.Add('Perfil.: :perfil');
AdicionaUsuario.fTitulo := 'Inclus<75>o de usu<73>rio';
AlteraUsuario := TUCMailMessage.Create(self);
AlteraUsuario.FLines.Add('Altera<72><61>o de usu<73>rio');
AlteraUsuario.FLines.Add('');
AlteraUsuario.fLines.Add('Nome...: :nome');
AlteraUsuario.fLines.Add('Login..: :login');
AlteraUsuario.fLines.Add('Senha..: :senha');
AlteraUsuario.fLines.Add('Email..: :email');
AlteraUsuario.fLines.Add('Perfil.: :perfil');
AlteraUsuario.fTitulo := 'Altera<72><61>o de usu<73>rio';
EsqueceuSenha := TUCMEsqueceuSenha.Create(self);
EsqueceuSenha.FLines.Add('Esquecia a senha');
EsqueceuSenha.FLines.Add('');
EsqueceuSenha.fLines.Add('Nome...: :nome');
EsqueceuSenha.fLines.Add('Login..: :login');
EsqueceuSenha.fLines.Add('Senha..: :senha');
EsqueceuSenha.fLines.Add('Email..: :email');
EsqueceuSenha.fLines.Add('Perfil.: :perfil');
EsqueceuSenha.fTitulo := 'Lembrete de senha';
SenhaForcada := TUCMailMessage.Create(self);
SenhaForcada.FLines.Add('Troca de senha for<6F>ada');
SenhaForcada.FLines.Add('');
SenhaForcada.fLines.Add('Nome...: :nome');
SenhaForcada.fLines.Add('Login..: :login');
SenhaForcada.fLines.Add('Senha..: :senha');
SenhaForcada.fLines.Add('Email..: :email');
SenhaForcada.fLines.Add('Perfil.: :perfil');
SenhaForcada.fTitulo := 'Troca de senha for<6F>ada';
SenhaTrocada := TUCMailMessage.Create(self);
SenhaTrocada.FLines.Add('Altera<72><61>o de senha');
SenhaTrocada.FLines.Add('');
SenhaTrocada.fLines.Add('Nome...: :nome');
SenhaTrocada.fLines.Add('Login..: :login');
SenhaTrocada.fLines.Add('Senha..: :senha');
SenhaTrocada.fLines.Add('Email..: :email');
SenhaTrocada.fLines.Add('Perfil.: :perfil');
SenhaTrocada.fTitulo := 'Altera<72><61>o de senha';
fAuthType := alsmtpClientAuthPlain;
if csDesigning in ComponentState then
begin
Porta := 25;
AdicionaUsuario.Ativo := True;
AlteraUsuario.Ativo := True;
EsqueceuSenha.Ativo := True;
SenhaForcada.Ativo := True;
SenhaTrocada.Ativo := True;
EsqueceuSenha.LabelLoginForm := RetornaLingua( ucPortuguesBr, 'Const_Log_LbEsqueciSenha');
EsqueceuSenha.MensagemEmailEnviado := RetornaLingua( ucPortuguesBr,'Const_Log_MsgMailSend');
end;
end;
destructor TMailUserControl.Destroy;
begin
SysUtils.FreeAndNil(FAdicionaUsuario);
SysUtils.FreeAndNil(FAlteraUsuario);
SysUtils.FreeAndNil(FEsqueceuSenha);
SysUtils.FreeAndNil(FSenhaForcada);
SysUtils.FreeAndNil(FSenhaTrocada);
inherited;
end;
procedure TMailUserControl.EnviaEmailAdicionaUsuario(Nome, Login, Senha, Email, Perfil: String; Key: Word);
begin
Senha := TrataSenha(Senha, Key);
EnviaEmailTP(Nome, Login, Senha, Email, Perfil, AdicionaUsuario);
end;
procedure TMailUserControl.EnviaEmailAlteraUsuario(Nome, Login, Senha, Email, Perfil: String; Key: Word);
begin
Senha := TrataSenha(Senha, Key);
EnviaEmailTP(Nome, Login, Senha, Email, Perfil, AlteraUsuario);
end;
procedure TMailUserControl.EnviaEmailSenhaForcada(Nome, Login, Senha, Email, Perfil: String);
begin
EnviaEmailTP(Nome, Login, Senha, Email, Perfil, SenhaForcada);
end;
procedure TMailUserControl.EnviaEmailSenhaTrocada(Nome, Login, Senha, Email, Perfil: String; Key: Word);
begin
EnviaEmailTP(Nome, Login, Senha, Email, Perfil, SenhaTrocada);
end;
function TMailUserControl.ParseMailMSG(Nome, Login, Senha, Email, Perfil, txt: String): String;
begin
Txt := StringReplace(txt, ':nome', nome, [rfReplaceAll]);
Txt := StringReplace(txt, ':login', login, [rfReplaceAll]);
Txt := StringReplace(txt, ':senha', senha, [rfReplaceAll]);
Txt := StringReplace(txt, ':email', email, [rfReplaceAll]);
Txt := StringReplace(txt, ':perfil', perfil, [rfReplaceAll]);
Result := Txt;
end;
procedure TMailUserControl.onStatus( Status : String );
begin
if not Assigned(UCEMailForm) then Exit;
UCEMailForm.lbStatus.Caption := Status;
UCEMailForm.Update;
end;
procedure TMailUserControl.EnviaEmailTp(Nome, Login, USenha, Email, Perfil: String; UCMSG: TUCMailMessage);
var
MailMsg : TAlSmtpClient;
MailRecipients : TStringlist;
MailHeader : TALSMTPClientHeader;
begin
if Trim(Email) = '' then
Exit;
MailMsg := TAlSmtpClient.Create;
MailMsg.OnStatus := OnStatus;
MailRecipients := TStringlist.Create;
MailHeader := TALSMTPClientHeader.Create;
MailHeader.From := EmailRemetente; //'rodrigo@oxio.com.br';
MailHeader.SendTo := Email ;
MailRecipients.Append(Email);
MailHeader.Subject := UCMSG.Titulo;
try
try
UCEMailForm := TUCEMailForm.Create(Self);
UCEMailForm.lbStatus.Caption := '';
UCEMailForm.Show;
UCEMailForm.Update;
MailMsg.SendMail(ServidorSMTP, FPorta, NomeRemetente ,
MailRecipients, Usuario, Senha, fAuthType , MailHeader.RawHeaderText,
ParseMailMSG(Nome, Login, USenha, Email, Perfil, UCMSG.Mensagem.Text));
UCEMailForm.Update;
except
on e: Exception do
begin
Beep;
UCEMailForm.Close;
MessageDlg(E.Message,mtWarning,[mbok],0);
raise;
end;
end;
finally
FreeAndNil(MailMsg);
FreeAndNil(MailHeader);
FreeAndNil(MailRecipients);
FreeAndNil(UCEMailForm);
end;
end;
procedure TMailUserControl.EnviaEsqueceuSenha(Nome, Login, Senha, Email, Perfil: String; Key: Word);
begin
if Trim(Email) = '' then
Exit;
try
Senha := TrataSenha(Senha, Key);
EnviaEmailTP(Nome, Login, Senha, Email, Perfil, EsqueceuSenha);
MessageDlg(EsqueceuSenha.MensagemEmailEnviado, mtInformation, [mbOK], 0);
except
end;
end;
function TmailUserControl.TrataSenha(Senha: String; Key: Word): String;
begin
Result := Decrypt(Senha, Key);
end;
end.