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

📄 frmreceive.pas

📁 Mailserver Source code - Delphi. Simple Mail server source code. SMTP and POP3 protocols.
💻 PAS
字号:
unit FrmReceive;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, Menus,
  DBGrids, DB, ADODB;

type
  TFrmReceive1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Label6: TLabel;
    edit8: TComboBox;
    Label7: TLabel;
    Edit9: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    ComboBox1: TComboBox;
    Label10: TLabel;
    SpeedButton1: TSpeedButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    ComboBox2: TComboBox;
    Label11: TLabel;
    DBGrid1: TDBGrid;
    procedure EditKeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure ComboBox2Select(Sender: TObject);

    procedure DBGrid1DblClick(Sender: TObject);
  private
    { Private declarations }
    FNowSql,FNowSql1:string;
    procedure QueryReceive;
    function  GetTotalMailCount:string;
    function  GetTotalMailSize:string;
    function  GetInfo:string;
  public
    { Public declarations }
    procedure IniShow;
  end;

var
  FrmReceive1: TFrmReceive1;

implementation

uses UnitDataModule, FrmAnalyze, UnitConst, FrmStatistics;

{$R *.dfm}

procedure TFrmReceive1.IniShow;
begin
  C_SetCombox(UnitDataModule1.GetDomain,ComboBox1);
  ComboBox1.Text:='';
end;

//查询--------------------------------------------------------------------------
procedure TFrmReceive1.QueryReceive;
var
  TopStr,
  DomainStr,
  MailStatusStr,
  MinSizeStr,
  MaxSizeStr,
  MinDateStr,
  MaxDateStr,
  MailFromStr,
  SubjectStr,
  UserIDStr:string;
  MySql:string;
  MyTag:integer;
begin
  MyTag:=0;
  if edit1.Text<>'' then
  begin
    MyTag:=1;
    UserIDStr:=' where USERID in'+'(select USERID from USERINFO_VIEW where USERIDNAME='''+edit1.Text+''')';
  end;
  if ComboBox1.Text<>'' then
  begin
    if MyTag=0 then
    begin
      DomainStr:=' where  USERID in'+'(select USERID from USERINFO_VIEW where DOMAINNAME='''+ComboBox1.Text+''')';
    end
    else begin
      DomainStr:=' and  USERID in'+'(select USERID from USERINFO_VIEW where DOMAINNAME='''+ComboBox1.Text+''')';
    end;
    MyTag:=1;
  end;
  if edit2.Text<>'' then
  begin
    if MyTag=0 then
    begin
      MinDateStr:=' where  MAILDATE>='+''''+edit2.Text+'''';
    end
    else begin
      MinDateStr:=' and MAILDATE>='+''''+edit2.Text+'''';
    end;
    MyTag:=1;
  end;
  if edit3.Text<>'' then
  begin
    if MyTag=0 then
    begin
      MaxDateStr:=' where  MAILDATE<='+edit3.Text;
    end
    else begin
      MaxDateStr:=' and MAILDATE<='+edit3.Text;
    end;
    MyTag:=1;
  end;

  if edit4.Text<>'' then
  begin
    if ComboBox2.ItemIndex=0 then
    begin
      if MyTag=0 then
      begin
        MailFromStr:=' where  MAILFROM='+''''+edit4.Text+'''';
      end
      else begin
        MailFromStr:=' and MAILFROM='+''''+edit4.Text+'''';
      end;
    end
    else begin
      if MyTag=0 then
      begin
        MailFromStr:=' where  RCPTTO='+''''+edit4.Text+'''';
      end
      else begin
        MailFromStr:=' and RCPTTO='+''''+edit4.Text+'''';
      end;
    end;
    MyTag:=1;
  end;

  if edit5.Text<>'' then
  begin
    if MyTag=0 then
    begin
      SubjectStr:=' where  SUBJECT like'+'''%'+edit5.Text+'%''';
    end
    else begin
      SubjectStr:=' and SUBJECT like'+'''%'+edit5.Text+'%''';
    end;
    MyTag:=1;
  end;

  if edit6.Text<>'' then
  begin
    if MyTag=0 then
    begin
      MinSizeStr:=' where MAILSIZE>'+edit6.Text;
    end
    else begin
      MinSizeStr:=' and MAILSIZE>'+edit6.Text;
    end;
    MyTag:=1;
  end;

  if edit7.Text<>'' then
  begin
    if MyTag=0 then
    begin
      MaxSizeStr:=' where MAILSIZE<'+edit7.Text;
    end
    else begin
      MaxSizeStr:=' and MAILSIZE<'+edit7.Text;
    end;
    MyTag:=1;
  end;

  if edit8.Text<>'' then
  begin
    if MyTag=0 then
    begin
      MailStatusStr:=' where MAILBOX='+inttostr(edit8.ItemIndex+1);
    end
    else begin
      MailStatusStr:=' and MAILBOX='+inttostr(edit8.ItemIndex+1);
    end;
  end;

  if edit9.Text<>'' then
    TopStr:=' top '+edit9.Text+' ';

 ///////////////////
   MySql:='select'+TopStr;
   FNowSql:='select'+TopStr;
   FNowSql1:='select'+TopStr;

   if ComboBox2.ItemIndex=0 then
   begin
     FNowSql:=FNowSql+' count(*) from RECEIVEMAILPROPERTY ';
     FNowSql1:=FNowSql1+' sum(MAILSIZE) from RECEIVEMAILPROPERTY ';
     MySql:=MySql+' MAILID,USERID,MAILFROM,SUBJECT,MAILDATE,MAILSIZE,MAILBOX from RECEIVEMAILPROPERTY ';
   end
   else begin
     FNowSql:=FNowSql+' count(*) from REPLYMAILPROPERTY ';
     FNowSql1:=FNowSql1+' sum(MAILSIZE) from REPLYMAILPROPERTY ';
     MySql:=MySql+' MAILID,USERID,RCPTTO,SUBJECT,MAILDATE,MAILSIZE,MAILBOX from REPLYMAILPROPERTY ';
   end;
   MySql:=MySql+
         UserIDStr+
         DomainStr+
         MinDateStr+
         MaxDateStr+
         MailFromStr+
         SubjectStr+
         MinSizeStr+
         MaxSizeStr+
         MailStatusStr;
   FNowSql:=FNowSql+
         UserIDStr+
         DomainStr+
         MinDateStr+
         MaxDateStr+
         MailFromStr+
         SubjectStr+
         MinSizeStr+
         MaxSizeStr+
         MailStatusStr;
   FNowSql1:=FNowSql1+
         UserIDStr+
         DomainStr+
         MinDateStr+
         MaxDateStr+
         MailFromStr+
         SubjectStr+
         MinSizeStr+
         MaxSizeStr+
         MailStatusStr;
  UnitDataModule1.ShowReceiveList(MySql);

end;
//------------------------------------------------------------------------------


procedure TFrmReceive1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
    SpeedButton1Click(self);
end;

procedure TFrmReceive1.SpeedButton1Click(Sender: TObject);
begin
  QueryReceive;
end;

function TFrmReceive1.GetTotalMailCount:string;
begin
    result:=UnitDataModule1.GetMCountOrSize(FNowSql);
end;

function TFrmReceive1.GetTotalMailSize:string;
begin
    result:=UnitDataModule1.GetMCountOrSize(FNowSql)+' byte';
end;

function TFrmReceive1.GetInfo:string;
var
  MyList:TStringList;
begin
  MyList:=TStringList.Create;
  try
    Mylist.Add('邮件总数:'+GetTotalMailCount);
    Mylist.Add('');
    Mylist.Add('邮件所占的空间:'+GetTotalMailSize);
    Mylist.Add('');
    result:=Mylist.Text;
  finally
    MyList.Free;
  end;
end;

procedure TFrmReceive1.N2Click(Sender: TObject);
begin
  FrmStatistics1.ShowText:=GetInfo;
  FrmStatistics1.ShowModal;
end;

procedure TFrmReceive1.PopupMenu1Popup(Sender: TObject);
begin
  if dbgrid1.DataSource.DataSet.Eof=true then
  begin
    n1.Enabled:=false;
    n2.Enabled:=false;
  end
  else begin
    n1.Enabled:=true;
    n2.Enabled:=true;
  end;
end;

procedure TFrmReceive1.ComboBox2Select(Sender: TObject);
begin
  if ComboBox2.ItemIndex=0 then
  begin
    Label3.Caption:='发信人email:';
    edit8.Text:='';
    edit8.Items.Clear;
    edit8.Items.Add('收件箱');
    edit8.Items.Add('发件箱');
    edit8.Items.Add('收藏箱');
    edit8.Items.Add('垃圾箱');
    edit8.Items.Add('彻底删除');
    edit8.Items.Add('');
    DBGrid1.Columns[2].Title.caption:='发信人email';

  end
  else begin
    Label3.Caption:='收信人email:';
    edit8.Text:='';
    edit8.Items.Clear;
    edit8.Items.Add('未转发');
    edit8.Items.Add('已转发');
    edit8.Items.Add('转发失败');
    edit8.Items.Add('');
    DBGrid1.Columns[2].Title.caption:='收信人email'
  end;
end;



procedure TFrmReceive1.DBGrid1DblClick(Sender: TObject);
begin
  try
    screen.Cursor:=crHourGlass;
    with  DBGrid1.DataSource.DataSet do
    begin
      if Eof=false then
      begin
        UnitDataModule1.DCOMConnection1.AppServer.MailID:=fields[0].AsString;
        UnitDataModule1.DCOMConnection1.AppServer.UserMail:=UnitDataModule1.GetUserIDMailName(fields[1].AsString);
        if  ComboBox2.ItemIndex=0 then
          UnitDataModule1.DCOMConnection1.AppServer.ReplyState:='0'
        else
          UnitDataModule1.DCOMConnection1.AppServer.ReplyState:='1';
        UnitDataModule1.DCOMConnection1.AppServer.MailBox:=inttostr(ComboBox2.ItemIndex+1);
        C_SaveMailData(UnitDataModule1.DCOMConnection1.AppServer.MailData);
        FrmAnalyze1.NowDecodeMail;
        FrmAnalyze1.showmodal;
      end;
    end;
  finally
    screen.Cursor:=crDefault;
  end;
end;

end.

⌨️ 快捷键说明

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