Internet - programa completo de email client com copia no server ou nao |
Top Previous Next |
|
unit Unit1;
interface
Uses Windows, Forms,Sysutils, Messages, Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdPOP3, IdBaseComponent, IdMessage, IdAntiFreezeBase, IdAntiFreeze, STDCtrls, IdIntercept, IdLogBase, IdLogEvent, Classes, Controls, ExtCtrls;
type TForm1 = class(TForm) msg: TIdMessage; pop: TIdPOP3; IdLogEvent1: TIdLogEvent; IdAntiFreeze1: TIdAntiFreeze; ListBox2: TListBox; Memo1: TMemo; Panel1: TPanel; Button1: TButton; CheckBox1: TCheckBox; edUser: TEdit; edPass: TEdit; edServer: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure IdLogEvent1Received(ASender: TComponent; const AText,AData: String); procedure IdLogEvent1Sent(ASender: TComponent; const AText, AData: String); end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); Var NumMsg, CurMsg, x : Integer; FileName, Path : String;
begin Memo1.Clear; Listbox2.Items.Clear; Path := 'C:\WINDOWS\DESKTOP\';
if POP.Connected then POP.Disconnect;
// Dados para a conexão POP.Host := edServer.Text; POP.Port := 110; POP.Username := edUser.Text; POP.Password := edPass.Text; POP.Connect; Try // Pega a quantidade de mensagens existentes na caixa postal NumMsg := POP.CheckMessages; Memo1.Lines.Add('Quantidade de mensagens: '+IntToStr(NumMsg) );
If NumMsg>0 Then Begin;
// Recupera individualmente cada mensagem For CurMsg := 1 to NumMsg do Begin
// Recupera o Header da Mensagem Msg.Clear; POP.Retrieve(CurMsg,msg); Memo1.Lines.Add('Mensagem Número '+IntToStr(CurMsg)); Memo1.Lines.Add('De: '+msg.From.Text); Memo1.Lines.Add('Para: '+Msg.Recipients.EmailAddresses); Memo1.Lines.Add('Assunto: '+Msg.Subject); Memo1.Lines.Add('Data: '+FormatDateTime('dd/mm/yyyy hh:mm:ss', Msg.Date));
// Identifica os tipos Mime contidos no corpo do email For x := 0 to Pred(Msg.MessageParts.Count) do begin
// Se for Attachment - Salva os arquivos anexos... if (Msg.MessageParts.Items[x] is TIdAttachment) then begin FileName := Path+TIdAttachment(Msg.MessageParts.Items[x]).filename; If FileExists(FileName) then DeleteFile(FileName); TIdAttachment(Msg.MessageParts.Items[x]).SaveToFile(FileName); Memo1.Lines.Add('Arquivo '+FileName+' foi salvo');
// Se não for Attachment - Considera como corpo da mensagem end else begin if Msg.MessageParts.Items[x] is TIdText then begin Memo1.Lines.Add('Texto: '+TIdText(Msg.MessageParts.Items[x]).Body.Text); end end; end;
// Deleta a mensagem do Servidor de Email If not CheckBox1.Checked Then Pop.Delete(CurMsg); Memo1.Lines.Add('---');
End; End; Finally POP.Disconnect; End; end;
{ Observaçoes:
O Componente AntiFreeze é usado para evitar o "congelamento" da aplicação durante as requisições Socket.
}
procedure TForm1.IdLogEvent1Received(ASender: TComponent; const AText, AData: String); begin Listbox2.Items.Add('Recebido: '+ADAta); end;
procedure TForm1.IdLogEvent1Sent(ASender: TComponent; const AText, AData: String); begin Listbox2.Items.Add('Enviado: '+ADAta); end;
end.
============= DFM
object Form1: TForm1 Left = 210 Top = 133 Width = 673 Height = 298 Caption = 'Mail Checker' Color = clBtnFace Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object ListBox2: TListBox Left = 0 Top = 152 Width = 665 Height = 112 Align = alBottom ItemHeight = 13 TabOrder = 0 end object Memo1: TMemo Left = 241 Top = 0 Width = 424 Height = 152 Align = alClient TabOrder = 1 end object Panel1: TPanel Left = 0 Top = 0 Width = 241 Height = 152 Align = alLeft TabOrder = 2 object Label1: TLabel Left = 8 Top = 16 Width = 36 Height = 13 Caption = 'Usuário' end object Label2: TLabel Left = 144 Top = 16 Width = 30 Height = 13 Caption = 'Senha' end object Label3: TLabel Left = 8 Top = 58 Width = 66 Height = 13 Caption = 'Servidor POP' end object Button1: TButton Left = 153 Top = 125 Width = 75 Height = 25 Caption = 'Checar Email' TabOrder = 0 OnClick = Button1Click end object CheckBox1: TCheckBox Left = 8 Top = 104 Width = 217 Height = 17 Caption = 'Deixar uma cópia no servidor' TabOrder = 1 end object edUser: TEdit Left = 8 Top = 32 Width = 121 Height = 21 TabOrder = 2 end object edPass: TEdit Left = 144 Top = 32 Width = 82 Height = 21 PasswordChar = '*' TabOrder = 3 end object edServer: TEdit Left = 8 Top = 72 Width = 217 Height = 21 TabOrder = 4 end end object msg: TIdMessage AttachmentEncoding = 'MIME' BccList = <> CCList = <> Encoding = meMIME Recipients = <> ReplyTo = <> Left = 248 Top = 16 end object pop: TIdPOP3 Intercept = IdLogEvent1 MaxLineAction = maException ReadTimeout = 0 Left = 280 Top = 16 end object IdLogEvent1: TIdLogEvent Active = True OnReceived = IdLogEvent1Received OnSent = IdLogEvent1Sent Left = 312 Top = 16 end object IdAntiFreeze1: TIdAntiFreeze OnlyWhenIdle = False Left = 344 Top = 16 end end |