Cadastre-se Revistas DevMedia Cursos
 

Space de MARCOS PACHECO
Busca Autor


Últimas 20 atualizações de MARCOS PACHECO

Artigo - Envio de E-mail usando o componente indy usando SMTP Gmail

O Gmail utiliza um sistema de criptografia chamado SSL, e para podermos conectar nossa aplicação à ele, necessitamos de duas dlls especificas: libeay32.dll e ssleay32.dll. Elas podem ser encontradas no link abaixo.

http://indy.fulgan.com/SSL/indy_OpenSSL096m.zip

Após baixa-las, descompacte-as no diretório C:\WINDOWS\System32.

 

Vamos ao programa

Abra um novo projeto e salve-os:

  • USendMail.pas
  • SendMail.dpr

Adicione os componentes:

Standard

  • 1) PopMenu
  • 1) ListBox
  • 1) Memo
  • 1) GroupBox
  • 1) CheckBox
  • 10) Label
  • 9) Edit
  • 1) Button

indy Clients

  • 1) IdSMTP

indy Misc

  • 1)IdMessage
  • 1) IdAntiFreeze

indy I/O Handles

  • 1)IdISSLOHANDLERSocket

Dialogs

  • 1) OpenDialog
Additional
  • 2) BitBtn
  • 1) SpeedButton

Samples

  • 1) Gauge

Win32

  • 1) StatusBar

Configure e renomeie as propriedades como a Figura 1.

  • btnEnviar: TBitBtn;
  • ScrollBox1: TScrollBox;
  • pg1: TGauge;
  • StatusBar1: TStatusBar;
  • Label1: TLabel;
  • EdtNum: TEdit;
  • EdtAssunto: TEdit;
  • Label2: TLabel;
  • EdtOrigem: TEdit;
  • Label3: TLabel;
  • Label5: TLabel;
  • mmoMsg: TMemo;
  • Label6: TLabel;
  • EdtSMTP: TEdit;
  • Label7: TLabel;
  • EdtUsuario: TEdit;
  • Label8: TLabel;
  • EdtSenha: TEdit;
  • GroupBox1: TGroupBox;
  • Label4: TLabel;
  • Label9: TLabel;
  • Label10: TLabel;
  • EdtPara: TEdit;
  • EdtCC: TEdit;
  • EdtBCC: TEdit;
  • CheckBox1: TCheckBox;
  • ListBoxAnexos: TListBox;
  • Label11: TLabel;
  • btnAnexo: TSpeedButton;
  • OpenDialog1: TOpenDialog;
  • PopupMenu1: TPopupMenu;
  • mnuDeletarAnexoSelecionado: TMenuItem;
  • DeletarTodososAnexos1: TMenuItem;
  • BitBtn3: TBitBtn;
  • IdSMTP1: TIdSMTP;
  • IdMessage1: TIdMessage;
  • SSLSocket: TIdSSLIOHandlerSocket;
  • Button1: TButton;
  • IdAntiFreeze1: TIdAntiFreeze; 
  • Image1 : TImage;
Organização da tela

Figura 1: Organização da tela

Vamos para o código.

Listagem 1: Evento OnClick do botão enviar

procedure TForm1.btnEnviarClick(Sender: TObject);
var
	i: integer;
begin
	try
		cancelar:= false;
		Screen.Cursor:= crHourGlass;
		btnEnviar.Enabled:= false;
		pg1.MaxValue := StrToInt(EdtNum.Text);
		pg1.Progress := 0;
		IdSMTP1.Host := EdtSMTP.Text;
		IdSMTP1.Username:= EdtUsuario.Text;
		IdSMTP1.Password := EdtSenha.Text;

		
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
20/05/2008 21:14:00





Artigo - Envio de arquivos usando IDFTP com indy 10

Desenvolvendo o layout do Módulo de FTP

Inicialmente , incorpore os seguintes componentes ao form

  • 1 memo (paleta standard) NAME = Memo_Relatorio_FTP
  • 4 label (paleta standard) NAME = Label_Host , Label_Nome , Label_Senha , Label_FTP_Aviso
  • 3 button (paleta standard) NAME = Btn_Conectar , Btn_Desconectar , Btn_Upload
  • 3 caixa de texto(edit) (paleta standard) NAME= Edit_Host , Edit_Name , Edit_Senha
  • 1 Sharp (paleta Additional) NAME = Shape_Conectado
  • 1 IdFTP ( paleta Indy clientes) NAME = IdFTP1
  • 1 OpenDialog (paleta Dialogs) NAME = OpenDialog1

DEIXE OS COMPONENTES COMO ESTA A FOTO ABAIXO:

Figura 1

1)Dê um duplo-clique no Btn_Conectar e insira as instruções apresentadas a seguir:

procedure TForm1.Btn_ConectarClick(Sender: TObject);
begin
idFTP1.Host := Edit_Host.Text;
idFTP1.Username := Edit_Name.Text;
idFTP1.Password := Edit_Senha.Text;
try
idFTP1.Connect;
finally
if idFTP1.Connected = True Then
Shape_Conectado.Brush.Color := clLime;
Memo_Relatorio_FTP.Lines.Add(''Conectado ao endereço: '' + idFTP1.Host);
Memo_Relatorio_FTP.Lines.Add(''Servidor remoto: '' + idFTP1.SystemDesc);
Memo_Relatorio_FTP.Lines.Add('' '');

Btn_Upload.Enabled := True;
Btn_Desconectar.Enabled := True;
Btn_Conectar.Enabled :=False;
end;

end;

2) Em seguida dê um duplo-clique no botão Btn_Upload e insira as instruções em negrito:

procedure TForm1.Btn_UploadClick(Sender: TObject);
var
m : TStream;
f : TStream;
t : Cardinal;
Nome_Arquivo,
Auxiliar :String;
contador : Integer;
begin
Auxiliar := '''';
f := nil;
m := nil;

Memo_Relatorio_FTP.Lines.Add(''Diretório original: '' + Diretorio_Leitura);
OpenDialog1.Filter := ''Arquivos(*.*)|*.*'';

if OpenDialog1.Execute then
begin

Nome_Arquivo := OpenDialog1.FileName;

Memo_Relatorio_FTP.Lines.Add (''Operação: troca de diretório local'');
Memo_Relatorio_FTP.Lines.Add (''Diretório do arquivo: '' + GetCurrentDir);
Memo_Relatorio_FTP.Lines.Add ('''');

Nome_Arquivo := AnsiStrRScan(PCHar(Nome_Arquivo), ''\'');
for contador := 2 To StrLen(PCHar(Nome_Arquivo)) do
Auxiliar := Auxiliar + Nome_Arquivo [contador];
Nome_Arquivo := Auxiliar;

try
Memo_Relatorio_FTP.Lines.Add(''Operação: Upload'');
Memo_Relatorio_FTP.Lines.Add (''Arquivo local: '' + OpenDialog1.FileName);
Memo_Relatorio_FTP.Lines.Add (''Gravado como: '' + Nome_Arquivo);

f := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
m := TMemoryStream.Create;
m.CopyFrom(f,f.Size);
m.Seek(0,0) ;
t := GetTickCount;
idFTP1.Put(m,Nome_Arquivo);

Memo_Relatorio_FTP.Lines.Add(Format(''tempo %d milesegundos'',[GetTickCount - t]));
Memo_Relatorio_FTP.Lines.Add(Format(''Tamanho %d bytes'',[m.Size]));
Memo_Relatorio_FTP.Li
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
17/05/2008 13:41:00





 

Marcos Pacheco Técnico Informática, redes e copiadoras laser
Arquivo de atualizações
 2008

Estatísticas do Autor:
Número de posts: 2
Características dos posts deste autor:
Conteúdo:
Utilidade:
9 8
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group