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

📄 main.pas

📁 邮件系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, TabNotBk, Grids, DBGrids, Buttons, DB, ADODB,
  Mask, ExtCtrls, ToolWin, Menus, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdMessage, IdPOP3;

type
  TXmailForm = class(TForm)
    TabbedNotebook1: TTabbedNotebook;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Label6: TLabel;
    Edit6: TEdit;
    GroupBox2: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    BitBtn1: TBitBtn;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    DBGrid2: TDBGrid;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    RadioButton6: TRadioButton;
    RadioButton7: TRadioButton;
    RadioButton8: TRadioButton;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    Label11: TLabel;
    Edit11: TEdit;
    Label12: TLabel;
    Edit12: TEdit;
    Label13: TLabel;
    Edit13: TEdit;
    Label14: TLabel;
    Edit14: TEdit;
    Label15: TLabel;
    Edit15: TEdit;
    Label16: TLabel;
    Edit16: TEdit;
    Label17: TLabel;
    Edit17: TEdit;
    Label18: TLabel;
    MaskEdit1: TMaskEdit;
    Label19: TLabel;
    Edit18: TEdit;
    Label20: TLabel;
    Edit19: TEdit;
    BitBtn2: TBitBtn;
    GroupBox5: TGroupBox;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Image1: TImage;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    BitBtn5: TBitBtn;
    GroupBox6: TGroupBox;
    Edit20: TEdit;
    Panel1: TPanel;
    Panel2: TPanel;
    Edit21: TEdit;
    Label24: TLabel;
    Edit22: TEdit;
    Panel3: TPanel;
    Edit23: TEdit;
    Label25: TLabel;
    Edit24: TEdit;
    GroupBox7: TGroupBox;
    Memo1: TMemo;
    GroupBox8: TGroupBox;
    ListBox1: TListBox;
    ToolBar1: TToolBar;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Label26: TLabel;
    Label27: TLabel;
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    ToolBar2: TToolBar;
    SpeedButton4: TSpeedButton;
    GroupBox9: TGroupBox;
    Label28: TLabel;
    ComboBox1: TComboBox;
    Label29: TLabel;
    Edit25: TEdit;
    Label30: TLabel;
    Edit26: TEdit;
    GroupBox10: TGroupBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    Label31: TLabel;
    Label32: TLabel;
    GroupBox11: TGroupBox;
    Label33: TLabel;
    SpeedButton5: TSpeedButton;
    IdPOP31: TIdPOP3;
    Memo2: TMemo;
    PopupMenu2: TPopupMenu;
    N3: TMenuItem;
    N4: TMenuItem;
    procedure TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure Panel3Click(Sender: TObject);
    procedure Panel2Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure ListBox2Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    procedure initiateaccount;
    procedure initiateaddress;
  end;

var
  XmailForm: TXmailForm;
  page:integer;
implementation
  uses addressbook;
type
    TAccount=record
  sendname:array[1..30] of char;
  mailaddress:array[1..30] of char;
  password:array[1..10] of char;
  pop3server:array[1..20] of char;
  smtpserver:array[1..20] of char;
  deleteafterreceive:boolean;
  veriftwhensendmail:boolean;
  timeout:integer;
end;
{$R *.dfm}

procedure TXmailForm.TabbedNotebook1Change(Sender: TObject;
  NewTab: Integer; var AllowChange: Boolean);
begin
    page:=newTab;
    if NewTab=0 then
    begin
        adoquery1.Close;
        adoquery1.SQL.clear;
        adoquery1.sql.add('select * from 账号表');
        adoquery1.Active:=true;
        combobox1.Items.Clear;
        while not adoquery1.Eof do
        begin
            combobox1.Items.add(adoquery1.fieldbyname('邮件地址').asstring);
            adoquery1.next;
        end;
        adoquery1.Close;
        memo2.ReadOnly:=true;
        memo2.Lines.Clear;
    end
    else if NewTab=1 then
    begin
        Edit24.ReadOnly:=true;
        Edit24.TabStop:=false;
    end
    else if NewTab=2 then
    begin
        DBgrid1.ReadOnly:=true;
        adoquery1.close;
        Adoquery1.SQL.clear;
        adoquery1.sql.add('select * from 账号表');
        adoquery1.Active:=true;
        if AdoQuery1.Recordset.RecordCount=0 then
        begin
            RadioButton1.Checked:=true;
            RadioButton2.Enabled:=false;
            RadioButton3.Enabled:=false;
            Edit2.Enabled:=true;
            Edit6.text:='30';
            RadioButton4.Checked:=true;
        end
        else
        begin
            RadioButton3.Checked:=true;
            Edit2.Enabled:=false;
        end;
    end
    else if NewTab=3 then
    begin
        DBgrid2.ReadOnly:=true;
        DBGrid2.DataSource:=datasource1;
        Adoquery1.SQL.clear;
        adoquery1.close;
        adoquery1.sql.add('select * from 通信簿');
        adoquery1.Active:=true;
        if AdoQuery1.Recordset.RecordCount=0 then
        begin
            RadioButton6.Checked:=true;
            RadioButton7.Enabled:=false;
            RadioButton8.Enabled:=false;
        end
        else
            RadioButton8.Checked:=true;
    end
    else
    begin
    end
end;

procedure TXmailForm.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
    if page=2 then
    begin
        if ADOQuery1.Recordset.RecordCount>0 then
        begin
            Edit1.text:=Adoquery1.fieldbyname('发送者姓名').asstring;
            Edit2.text:=Adoquery1.fieldbyname('邮件地址').asstring;
            Edit3.text:=Adoquery1.fieldbyname('密码').asstring;
            Edit5.text:=Adoquery1.fieldbyname('接收邮件服务器').asstring;
            Edit4.text:=Adoquery1.fieldbyname('发送邮件服务器').asstring;
            CheckBox1.Checked:=Adoquery1.fieldbyname('是否保留副本').asboolean;
            CheckBox2.Checked:=Adoquery1.fieldbyname('发送时是否验证').asboolean;
            Edit6.text:=IntToStr(Adoquery1.fieldbyname('超时时间').asInteger);
            RadioButton4.Checked:=Adoquery1.fieldbyname('邮件格式').asboolean;
            RadioButton5.Checked:=not RadioButton4.Checked;
        end;
    end
    else if page=3 then
    begin
        if ADOQuery1.Recordset.RecordCount>0 then
        begin
            Edit7.text:=Adoquery1.fieldbyname('姓名').asstring;
            Edit8.text:=Adoquery1.fieldbyname('邮件地址').asstring;
            Edit9.text:=Adoquery1.fieldbyname('单位').asstring;
            Edit10.text:=Adoquery1.fieldbyname('职务').asstring;
            Edit11.text:=Adoquery1.fieldbyname('单位传真电话').asstring;
            Edit12.text:=Adoquery1.fieldbyname('通信地址').asstring;
            Edit13.text:=Adoquery1.fieldbyname('单位邮政编码').asstring;
            Edit14.text:=Adoquery1.fieldbyname('单位联系电话').asstring;
            Edit15.text:=Adoquery1.fieldbyname('家庭住址').asstring;
            Edit16.text:=Adoquery1.fieldbyname('家庭邮政编码').asstring;
            Edit17.text:=Adoquery1.fieldbyname('家庭联系电话').asstring;
            maskEdit1.text:=Datetostr(Adoquery1.fieldbyname('生日').asDatetime);
            Edit18.text:=Adoquery1.fieldbyname('个人主页').asstring;
            Edit19.text:=Adoquery1.fieldbyname('其它信息').asstring;
        end;
    end
    else
    begin
    end

end;

procedure TXmailForm.FormActivate(Sender: TObject);
begin
    TabbedNotebook1.ActivePage:='关于';
end;

procedure TXmailForm.BitBtn1Click(Sender: TObject);
var
    adoquery2:TAdoquery;
begin
    AdoQuery1.Close;
    adoquery2:=TAdoquery.Create(self);
    adoquery2.Connection:=adoconnection1;
    adoquery2.close;
    Adoquery2.sql.clear;
    if RadioButton1.Checked then
    begin
         adoquery2.sql.add('insert into 账号表 values(:sendmail,:mailaddress,:password,:pop3server,:smtpserver,:deleteafterreceive,:verifywhen,:timeout,:code)');
         adoquery2.Parameters.clear;
         adoquery2.Parameters.CreateParameter('sendmail',ftstring,pdinput,10,Edit1.text);
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
         adoquery2.Parameters.CreateParameter('password',ftstring,pdinput,10,Edit3.text);
         adoquery2.Parameters.CreateParameter('pop3pserver',ftstring,pdinput,20,Edit5.text);
         adoquery2.Parameters.CreateParameter('smtpserver',ftstring,pdinput,20,Edit4.text);
         adoquery2.Parameters.CreateParameter('deleteafterreceive',ftboolean,pdinput,1,checkbox1.Checked);
         adoquery2.Parameters.CreateParameter('verifywhensendmail',ftboolean,pdinput,1,checkbox2.Checked);
         adoquery2.Parameters.CreateParameter('timeout',ftinteger,pdinput,2,StrToInt(Edit6.text));
         adoquery2.Parameters.CreateParameter('code',ftboolean,pdinput,1,RadioButton4.Checked);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end
    else if RadioButton2.checked then
    begin
         adoquery2.sql.add('delete from 账号表 where 邮件地址=:mailaddress');
         adoquery2.Parameters.Clear;
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end
    else
    begin
         adoquery2.SQL.Add('update 账号表 set 发送者姓名=:sendmail,密码=:password,接收邮件服务器=:pop3server,发送邮件服务器=:smtpserver,是否保留副本=:deleteafterreceive,发送时是否验证=:verifywhensendmail,超时时间=:timeout,邮件格式=:code ');
         adoquery2.sql.Add('where 邮件地址=:mailaddress');
         adoquery2.Parameters.clear;
         adoquery2.Parameters.CreateParameter('sendmail',ftstring,pdinput,10,Edit1.text);
         adoquery2.Parameters.CreateParameter('password',ftstring,pdinput,20,Edit3.text);
         adoquery2.Parameters.CreateParameter('pop3pserver',ftstring,pdinput,20,Edit5.text);
         adoquery2.Parameters.CreateParameter('smtpserver',ftstring,pdinput,20,Edit4.text);
         adoquery2.Parameters.CreateParameter('deleteafterreceive',ftboolean,pdinput,1,checkbox1.Checked);
         adoquery2.Parameters.CreateParameter('verifywhensendmail',ftboolean,pdinput,1,checkbox2.Checked);
         adoquery2.Parameters.CreateParameter('timeout',ftinteger,pdinput,2,StrToInt(Edit6.text));
         adoquery2.Parameters.CreateParameter('code',ftboolean,pdinput,1,RadioButton4.Checked);
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end;
    adoquery1.Active:=true;
    if adoquery1.Recordset.RecordCount=0 then
    begin
         RadioButton1.Checked:=true;
         RadioButton2.Enabled:=false;
         RadioButton3.Enabled:=false;
         Edit2.Enabled:=true;
         initiateaccount;
    end
    else
    begin
         RadioButton2.Enabled:=true;
         RadioButton3.Enabled:=true;
         RadioButton3.checked:=true;
         Edit2.Enabled:=false
    end;
      adoquery2.close;
end;
procedure TXmailForm.initiateaccount;
begin
    Edit1.text:='';
    Edit2.Text:='';
    Edit3.text:='';
    Edit4.text:='';
    Edit5.text:='';
    Edit6.text:='30';
    CheckBox1.Checked:=true;
    RadioButton4.Checked:=true;
    edit1.SetFocus;
    Edit2.Enabled:=true;
end;
procedure TXmailForm.RadioButton1Click(Sender: TObject);
begin
    initiateaccount;
end;

procedure TXmailForm.BitBtn2Click(Sender: TObject);
begin
    adoquery1.Close;
    close;
end;

procedure TXmailForm.BitBtn4Click(Sender: TObject);
begin
    adoquery1.close;
    close;
end;

procedure TXmailForm.BitBtn3Click(Sender: TObject);
var
    AdoQuery2:TAdoQuery;
begin
    AdoQuery1.Close;
    adoquery2:=TAdoquery.Create(self);
    adoquery2.Connection:=adoconnection1;
    adoquery2.close;
    Adoquery2.sql.clear;
    if RadioButton6.Checked then
    begin
         adoquery2.sql.add('insert into 通信簿(姓名,邮件地址,单位,职务,通信地址,家庭住址,单位邮政编码,家庭邮政编码,单位联系电话,家庭联系电话,单位传真电话,生日,个人主页,其它信息)');
         adoquery2.SQL.add(' values(:name,:mailaddress,:units,:job,:unitsaddress,:homeaddress,:unitspostcode,:homepostcode,:unitsphone,:homephone,:faxphone,:birthday,:homepage,:other)');
         adoquery2.Parameters.clear;
         adoquery2.Parameters.CreateParameter('name',ftstring,pdinput,10,Edit7.text);
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,20,Edit8.text);
         adoquery2.Parameters.CreateParameter('units',ftstring,pdinput,50,Edit9.text);
         adoquery2.Parameters.CreateParameter('job',ftstring,pdinput,20,Edit10.text);

⌨️ 快捷键说明

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