⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 Indy控件使用示例程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
   ShowStatus(stTemp);
end;

procedure TfrmMain.ResetHeadersGrid;
begin
   lvHeaders.Items.Clear;
end;

procedure TfrmMain.FormActivate(Sender: TObject);
begin
  {Set up authentication dialog-box}
//  frmSMTPAuthentication.cboAuthType.ItemIndex := Ord( frmMessageEditor.SMTP.AuthenticationType );
//  frmSMTPAuthentication.edtAccount.Text := fmSetup.Account.Text;
//  frmSMTPAuthentication.edtPassword.Text := fmSetup.Password.Text;
//  frmSMTPAuthentication.EnableControls;

   ResetHeadersGrid;
   ToggleStatus(False);
end;

procedure TfrmMain.ToggleStatus(const Status: Boolean);
begin
   CheckMail.Enabled := not Status;
   Retrieve.Enabled := Status;
   Delete.Enabled := Status;
   Purge.Enabled := Status;
   Disconnect.Enabled := Status;
   if Status then
      ShowStatus('Connected')
   else
      ShowStatus('Not connected');
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Disconnect.Execute;
end;

procedure TfrmMain.CheckMailExecute(Sender: TObject);
begin
   Showbusy(true);
   ShowStatus('Connecting....');
   if POP.Connected then
      begin
         POP.Disconnect;
      end;
   POP.Host := Pop3ServerName;
   POP.Port := Pop3ServerPort;
   POP.Username := Pop3ServerUser;
   POP.Password := Pop3ServerPassword;
   POP.Connect;
   ToggleStatus(True);
   FMsgCount := POP.CheckMessages;
   FMailBoxSize := POP.RetrieveMailBoxSize div 1024;
   ShowFileStatus;
   if FMsgCount > 0 then
      begin
         ShowFileStatus;
         RetrievePOPHeaders(FMsgCount);
      end
   else
      begin
         ShowStatus('No messages on server');
      end;
   Showbusy(false);
end;

procedure TfrmMain.RetrieveExecute(Sender: TObject);
var
   stTemp: string;
   intIndex: Integer;
   li: TListItem;
begin
   stTemp := Statusbar1.Panels[1].text;
   if lvHeaders.Selected = nil then
      begin
         Exit;
      end;
   //initialise
   Showbusy(true);
   Msg.Clear;
   Memo1.Clear;
   lvMessageParts.Items.Clear;
   From.Caption := '';
   Cc.Caption := '';
   Subject.Caption := '';
   Date.Caption := '';
   Receipt.Caption := '';
   Organization.Caption := '';
   Priority.Caption := '';
   pnlAttachments.visible := false;

   //get message and put into MSG
   ShowStatus('Retrieving message "' + lvHeaders.Selected.SubItems.Strings[3] + '"');
   POP.Retrieve(lvHeaders.Selected.Index + 1, Msg);
   statusbar1.Panels[0].text := lvHeaders.Selected.SubItems.Strings[3];

   //Setup fields on screen from MSG
   From.Caption := Msg.From.Text;
   Recipients.Caption := Msg.Recipients.EmailAddresses;
   Cc.Caption := Msg.CCList.EMailAddresses;
   Subject.Caption := Msg.Subject;
   Date.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', Msg.Date);
   Receipt.Caption := Msg.ReceiptRecipient.Text;
   Organization.Caption := Msg.Organization;
   Priority.Caption := IntToStr(Ord(Msg.Priority) + 1);

   //Setup attachments list
   ShowStatus('Decoding attachments (' + IntToStr(Msg.MessageParts.Count) + ')');
   for intIndex := 0 to Pred(Msg.MessageParts.Count) do
      begin
         if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then
            begin //general attachment
               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
               li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
            end
         else
            begin //body text
               if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                     Memo1.Lines.Clear;
                     Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                  end
            end;
      end;
   ShowStatus(stTemp);
   Showbusy(false);
end;

procedure TfrmMain.DeleteExecute(Sender: TObject);
begin
   if lvHeaders.Selected <> nil then
      begin
         Showbusy(true);
         POP.Delete(lvHeaders.Selected.Index + 1);
         lvHeaders.Selected.ImageIndex := 3;
         Showbusy(false);
      end;
end;

procedure TfrmMain.PurgeExecute(Sender: TObject);
begin
   POP.Disconnect;
   ToggleStatus(False);
   CheckMailExecute(Sender);
end;

procedure TfrmMain.DisconnectExecute(Sender: TObject);
begin
   if POP.Connected then
      begin
         try
            POP.Reset;
         except
            ShowStatus('Your POP server doesn''t have Reset feature');
         end;
         POP.Disconnect;
         ToggleStatus(False);
      end;
end;

procedure TfrmMain.SetupExecute(Sender: TObject);
begin
  Application.CreateForm(TfmSetup, fmSetup);
  fmSetup.ShowModal;
end;

procedure TfrmMain.SendExecute(Sender: TObject);
begin
   frmMessageEditor.ShowModal;
end;

procedure TfrmMain.lvMessagePartsClick(Sender: TObject);
begin
  {display message parts we selected}
   if lvMessageParts.Selected <> nil then
      begin
         if lvMessageParts.Selected.Index > Msg.MessageParts.Count then
            begin
               MessageDlg('Unknown index', mtInformation, [mbOK], 0);
            end
         else
            begin
            showmessage(TIdAttachment(Msg.MessageParts.Items[lvMessageParts.Selected.Index]).Filename);
            end;
      end;
end;
//      Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[lvMessageParts.Selected.Index]).Body);

procedure TfrmMain.Exit1Click(Sender: TObject);
begin
   close;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  // read the configuration from ini file
  ReadConfiguration;

   name := 'frmMain';

   //setup path to put attachments into
   FAttachPath := IncludeTrailingPathDelimiter(ExtractFileDir(Application.exename)); //starting directory
   FAttachPath := FAttachPath + 'Attach\';
   if not DirectoryExists(FAttachPath) then ForceDirectories(FAttachPath);

   FMsgCount := 0; FMailBoxSize := 0;
   Showbusy(false);
end;

procedure TfrmMain.pnlServerNameClick(Sender: TObject);
begin
   SetupExecute(Sender); //show setup screen
end;

procedure TfrmMain.ReadConfiguration;
var
  MailIni: TIniFile;
begin
  MailIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Mail.ini');
  with MailIni do begin
    Pop3ServerName := ReadString('Pop3', 'ServerName', 'pop3.server.com');
    Pop3ServerPort := StrToInt(ReadString('Pop3', 'ServerPort', '110'));
    Pop3ServerUser := ReadString('Pop3', 'ServerUser', 'your_login');
    Pop3ServerPassword := ReadString('Pop3', 'ServerPassword', 'your_password');

    SmtpServerName := ReadString('Smtp', 'ServerName', 'smtp.server.com');
    SmtpServerPort := StrToInt(ReadString('Smtp', 'ServerPort', '25'));
    SmtpServerUser := ReadString('Smtp', 'ServerUser', 'your_login');
    SmtpServerPassword := ReadString('Smtp', 'ServerPassword', 'your_password');
    SmtpAuthType := ReadInteger('Smtp', 'SMTPAuthenticationType', 0);

    UserEmail := ReadString('Email', 'PersonalEmail', 'someaddress@somewhere.com');
  end;
  MailIni.Free;
end;

procedure TfrmMain.lvHeadersDblClick(Sender: TObject);
begin
  RetrieveExecute(Sender);
end;

procedure TfrmMain.Selectfromdeletion1Click(Sender: TObject);
var i : integer;
begin
for i := 0 to lvHeaders.Items.Count - 1 do
  begin
  Showbusy(true);
  POP.Delete(i+1);
  lvHeaders.Items[i].ImageIndex := 3;
  Showbusy(false);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -