Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit uEnviaEmail;
- interface
- uses
- IdTCPConnection, IdTCPClient,
- IdMessageClient, IdSMTP, IdMessage, IdBaseComponent, IdComponent,
- IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL;
- Type
- TEnviaEmail = class
- private
- { private declarations }
- FSMTP_Servidor: String;
- FSMTP_Porta: Integer;
- FSMTP_Usuario: String;
- FSMTP_Senha: String;
- FSMTP_Email: String;
- FSMTP_Autenticacao: String;
- FSMTP_ConexaoSegura: String;
- FEmailContador: String;
- FAnexo: String;
- FMensagem: String;
- FErro: Boolean;
- procedure SetAnexo(const Value: String);
- procedure SetEmailContador(const Value: String);
- procedure SetErro(const Value: Boolean);
- procedure SetSMTP_Autenticacao(const Value: String);
- procedure SetSMTP_ConexaoSegura(const Value: String);
- procedure SetSMTP_Email(const Value: String);
- procedure SetSMTP_Porta(const Value: Integer);
- procedure SetSMTP_Senha(const Value: String);
- procedure SetSMTP_Servidor(const Value: String);
- procedure SetSMTP_Usuario(const Value: String);
- procedure SetMensagem(const Value: String);
- procedure CarregarInformacoes;
- protected
- { protected declarations }
- FCentroResultado: String;
- public
- { public declarations }
- property SMTP_Servidor: String read FSMTP_Servidor write SetSMTP_Servidor;
- property SMTP_Porta: Integer read FSMTP_Porta write SetSMTP_Porta;
- property SMTP_Usuario: String read FSMTP_Usuario write SetSMTP_Usuario;
- property SMTP_Senha: String read FSMTP_Senha write SetSMTP_Senha;
- property SMTP_Email: String read FSMTP_Email write SetSMTP_Email;
- property SMTP_Autenticacao: String read FSMTP_Autenticacao write SetSMTP_Autenticacao;
- property SMTP_ConexaoSegura: String read FSMTP_ConexaoSegura write SetSMTP_ConexaoSegura;
- property Erro: Boolean read FErro write SetErro;
- property EmailContador: String read FEmailContador write SetEmailContador;
- property Anexo: String read FAnexo write SetAnexo;
- property Mensagem: String read FMensagem write SetMensagem;
- constructor Create;
- //constructor Create(pCentroResultado: String); Overload;
- destructor Destroy; Override;
- function Enviar: Boolean;
- published
- { published declarations }
- end;
- var
- IdSMTP: TIdSMTP;
- IdMessage: TIdMessage;
- IdSocket: TIdSSLIOHandlerSocket;
- implementation
- uses
- uRegistro;
- { TEnviaEmail }
- procedure TEnviaEmail.CarregarInformacoes;
- begin
- (*
- Se for Informado centro de Resultado, a rotina pegará as informações do registro.
- Caso contrário, deverá ser especificado.
- *)
- try
- if (FCentroResultado <> '') then
- begin
- if not(Assigned(Registro)) then
- Registro := TRegistro.Create(nil);
- SMTP_Servidor := Registro.ReadString(FCentroResultado, 'NFE', 'ServidorSMTP','');
- SMTP_Usuario := Registro.ReadString(FCentroResultado, 'NFE', 'UsuarioRemetente','');
- SMTP_Senha := Registro.ReadString(FCentroResultado, 'NFE', 'EmailSenha','');
- SMTP_Email := Registro.ReadString(FCentroResultado, 'NFE', 'EmailRemetente','');
- SMTP_Autenticacao := Registro.ReadString(FCentroResultado, 'NFE', 'AutenticacaoEmail','');
- EmailContador := Registro.ReadString(FCentroResultado, 'NFE', 'EmailEscrContabilidade','');
- Mensagem := 'Este e-mail contem os XMLs do período solicitado pelo escritório da contabilidade!';
- if (Registro.ReadString(FCentroResultado, 'NFE', 'PortaEmail','') = '') then
- SMTP_Porta := 0
- else
- SMTP_Porta := StrToInt(Registro.ReadString(FCentroResultado, 'NFE', 'PortaEmail',''));
- if (Registro.ReadString(FCentroResultado, 'NFE', 'AutenticacaoSSLTLS','') = 'TLS') or (Registro.ReadString(FCentroResultado, 'NFE', 'AutenticacaoSSLTLS','') = 'SSL')then
- SMTP_ConexaoSegura := 'S'
- else
- SMTP_ConexaoSegura := 'N';
- end;
- except
- end
- end;
- constructor TEnviaEmail.Create;
- begin
- Erro := False;
- IdSMTP := TIdSMTP.Create(nil);
- IdMessage := TIdMessage.Create(nil);
- IdSocket := TIdSSLIOHandlerSocket.Create(nil);
- end;
- {
- constructor TEnviaEmail.Create(pCentroResultado: String): Overload;
- begin
- inherited;
- Erro := False;
- IdSMTP := TIdSMTP.Create(nil);
- IdMessage := TIdMessage.Create(nil);
- IdSocket := TIdSSLIOHandlerSocket.Create(nil);
- FCentroResultado := pCentroResultado;
- end;
- }
- destructor TEnviaEmail.Destroy;
- begin
- IdSMTP.Free;
- IdMessage.Free;
- IdSocket.Free;
- inherited;
- end;
- function TEnviaEmail.Enviar: Boolean;
- begin
- try
- CarregarInformacoes;
- //Configurando Cabeçalho do E-mail
- IdMessage.Clear;
- IdMessage.Subject := 'Envio das XMLs para Contabilidade.';
- IdMessage.From.Address := SMTP_Email;
- IdMessage.From.Text := '<' + SMTP_Email + '>';
- //Configurando o Destinatário
- IdMessage.Priority := mpHigh;
- IdMessage.ReceiptRecipient.Text := IdMessage.From.Text;
- IdMessage.Recipients.EMailAddresses := EmailContador;
- IdMessage.Body.Add(Mensagem);
- TIdAttachment.Create(IdMessage.MessageParts, Anexo);
- //-----Conexão Segura SSL
- if (SMTP_ConexaoSegura = 'S') then
- begin
- IdSMTP.IOHandler := IdSocket;
- IdSocket.SSLOptions.Method := sslvTLSv1;
- IdSocket.PassThrough := True;
- end
- else
- IdSMTP.IOHandler := nil;
- IdSMTP.Port := SMTP_Porta;
- IdSMTP.Host := SMTP_Servidor;
- IdSMTP.Username := SMTP_Usuario;
- IdSMTP.Password := SMTP_Senha;
- try
- IdSMTP.Connect();
- //Emula o Comportamento do TLS
- if (SMTP_ConexaoSegura = 'S') then
- begin
- IdSMTP.SendCmd('STARTTLS', 220);
- IdSocket.PassThrough := False;
- end;
- if (SMTP_Autenticacao = 'S') then
- begin
- IdSMTP.AuthenticationType := atLogin;
- IdSMTP.Authenticate;
- end
- else
- IdSMTP.AuthenticationType := atNone;
- IdSMTP.Send(IdMessage);
- Result := True;
- except
- Result := False;
- end;
- finally
- if (IdSMTP.Connected) then
- IdSMTP.Disconnect;
- end;
- end;
- procedure TEnviaEmail.SetAnexo(const Value: String);
- begin
- FAnexo := Value;
- end;
- procedure TEnviaEmail.SetEmailContador(const Value: String);
- begin
- FEmailContador := Value;
- end;
- procedure TEnviaEmail.SetErro(const Value: Boolean);
- begin
- FErro := Value;
- end;
- procedure TEnviaEmail.SetMensagem(const Value: String);
- begin
- FMensagem := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Autenticacao(const Value: String);
- begin
- FSMTP_Autenticacao := Value;
- end;
- procedure TEnviaEmail.SetSMTP_ConexaoSegura(const Value: String);
- begin
- FSMTP_ConexaoSegura := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Email(const Value: String);
- begin
- FSMTP_Email := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Porta(const Value: Integer);
- begin
- FSMTP_Porta := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Senha(const Value: String);
- begin
- FSMTP_Senha := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Servidor(const Value: String);
- begin
- FSMTP_Servidor := Value;
- end;
- procedure TEnviaEmail.SetSMTP_Usuario(const Value: String);
- begin
- FSMTP_Usuario := Value;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement