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

📄 main.pas

📁 邮件系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
         adoquery2.Parameters.CreateParameter('unitsaddress',ftstring,pdinput,30,Edit12.text);
         adoquery2.Parameters.CreateParameter('homeaddress',ftstring,pdinput,30,Edit15.text);
         adoquery2.Parameters.CreateParameter('unitspostcode',ftstring,pdinput,6,Edit13.text);
         adoquery2.Parameters.CreateParameter('homepostcode',ftstring,pdinput,6,Edit16.text);
         adoquery2.Parameters.CreateParameter('unitsphone',ftstring,pdinput,20,Edit14.text);
         adoquery2.Parameters.CreateParameter('homephone',ftstring,pdinput,20,Edit17.text);
         adoquery2.Parameters.CreateParameter('Faxphone',ftstring,pdinput,20,edit11.text);
         adoquery2.Parameters.CreateParameter('birthday',ftDatetime,pdinput,8,StrToDate(MaskEdit1.text));
         adoquery2.Parameters.CreateParameter('homepage',ftstring,pdinput,30,Edit18.text);
         adoquery2.Parameters.CreateParameter('other',ftstring,pdinput,50,Edit19.text);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end
    else if RadioButton7.checked then
    begin
         adoquery2.sql.add('delete from 通信簿 where 邮件地址=:mailaddress');
         adoquery2.Parameters.Clear;
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,20,Edit8.text);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end
    else
    begin
         adoquery2.SQL.Add('update 通信簿 set 姓名=:name,单位=:units,职务=:job,通信地址=:unitsaddress,家庭住址=:homeaddress,单位邮政编码=:unitspostcode,家庭邮政编码=:homepostcode,单位联系电话=:unitsphone,家庭联系电话=:homephone,');
         adoquery2.sql.add(' 单位传真电话=:faxphone,生日=:birthday,个人主页=:homepage,其它信息=:other where 邮件地址=:mailaddress');
         adoquery2.Parameters.clear;
         adoquery2.Parameters.CreateParameter('name',ftstring,pdinput,10,Edit7.text);
         adoquery2.Parameters.CreateParameter('units',ftstring,pdinput,50,Edit9.text);
         adoquery2.Parameters.CreateParameter('job',ftstring,pdinput,20,Edit10.text);
         adoquery2.Parameters.CreateParameter('unitsaddress',ftstring,pdinput,30,Edit12.text);
         adoquery2.Parameters.CreateParameter('homeaddress',ftstring,pdinput,30,Edit15.text);
         adoquery2.Parameters.CreateParameter('unitspostcode',ftstring,pdinput,6,Edit13.text);
         adoquery2.Parameters.CreateParameter('homepostcode',ftstring,pdinput,6,Edit16.text);
         adoquery2.Parameters.CreateParameter('unitsphone',ftstring,pdinput,20,Edit14.text);
         adoquery2.Parameters.CreateParameter('homephone',ftstring,pdinput,20,Edit17.text);
         adoquery2.Parameters.CreateParameter('Faxphone',ftstring,pdinput,20,edit11.text);
         adoquery2.Parameters.CreateParameter('birthday',ftDatetime,pdinput,8,StrToDate(MaskEdit1.text));
         adoquery2.Parameters.CreateParameter('homepage',ftstring,pdinput,30,Edit18.text);
         adoquery2.Parameters.CreateParameter('other',ftstring,pdinput,50,Edit19.text);
         adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,20,Edit8.text);
         adoquery2.Prepared;
         adoquery2.ExecSQL;
    end;
    adoquery1.Active:=true;
    if adoquery1.Recordset.RecordCount=0 then
    begin
         RadioButton6.Checked:=true;
         RadioButton7.Enabled:=false;
         RadioButton8.Enabled:=false;
         initiateaddress;
    end
    else
    begin
         RadioButton7.Enabled:=true;
         RadioButton8.Enabled:=true;
         RadioButton8.checked:=true;
    end;
      adoquery2.close;
end;
procedure TXMailForm.initiateaddress;
begin
    Edit7.text:='';
    Edit8.text:='';
    Edit9.text:='';
    Edit10.text:='';
    Edit11.text:='';
    Edit12.text:='';
    Edit13.text:='';
    Edit14.text:='';
    Edit15.text:='';
    Edit16.text:='';
    Edit17.text:='';
    Edit18.text:='';
    Edit19.text:='';
    MaskEdit1.text:='';
    Edit7.SetFocus;
end;
procedure TXmailForm.BitBtn5Click(Sender: TObject);
begin
    close;
end;

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

procedure TXmailForm.Panel1Click(Sender: TObject);
begin
    with AddressForm do
    begin
        Activecontrol:=DBGrid1;
        DBGrid1.ReadOnly:=true;
        Adoquery1.close;
        Adoquery1.SQL.clear;
        adoquery1.sql.add('select * from 通信簿');
        adoquery1.Parameters.clear;
        adoquery1.Active:=true;
        if ShowModal<>mrCancel then
            Edit20.Text:=Adoquery1.fieldByname('邮件地址').AsString;
    end;
end;

procedure TXmailForm.Panel3Click(Sender: TObject);
begin
    with AddressForm do
    begin
        Activecontrol:=DBGrid1;
        DBGrid1.ReadOnly:=true;
        Adoquery1.close;
        Adoquery1.SQL.clear;
        adoquery1.sql.add('select * from 账号表');
        adoquery1.Parameters.clear;
        adoquery1.Active:=true;
        caption:='发送者签名';
        if ShowModal<>mrCancel then
        begin
            Edit23.Text:=Adoquery1.fieldByname('邮件地址').AsString;
            Edit24.Text:=Adoquery1.fieldByname('发送者姓名').AsString;
        end;
    end;
end;

procedure TXmailForm.Panel2Click(Sender: TObject);
begin
    with AddressForm do
    begin
        Activecontrol:=DBGrid1;
        DBGrid1.ReadOnly:=true;
        Adoquery1.close;
        Adoquery1.SQL.clear;
        adoquery1.sql.add('select * from 通信簿');
        adoquery1.Parameters.clear;
        adoquery1.Active:=true;
        caption:='选择抄送者';
        if ShowModal<>mrCancel then
        begin
            Edit21.Text:=Adoquery1.fieldByname('邮件地址').AsString;
        end;
    end;
end;

procedure TXmailForm.SpeedButton2Click(Sender: TObject);
var
    f:file;
begin
    if OpenDialog1.Execute then
    begin
         ListBox1.Items.Add(OpenDialog1.FileName);
         Label26.caption:='附件:'+IntToStr(ListBox1.Items.Count)+'个';
         try
            AssignFile(f,OpenDialog1.FileName);
            Reset(f);
            Label27.Hint:=IntToStr(StrToInt(Label27.Hint)+FileSize(f));
            Label27.Caption:='总共:'+Label27.Hint+'Bytes';
            N1.Enabled:=true;
            N2.Enabled:=true;
            closefile(f);
         except
            On EInOutError do
            Begin
                ShowMessage('文件:'+OpenDialog1.FileName+'不能访问!'+#13#10+'文件_属性可能为只能为只读或该文件正在被使用!');
                ListBox1.clear;
            end;
         end;
    end;
end;

procedure TXmailForm.N2Click(Sender: TObject);
begin
    ListBox1.Clear;
    Label26.Caption:='附件:0个';
    Label27.Caption:='总共:0Bytes';
    N1.Enabled:=false;
    N2.Enabled:=false;
end;

procedure TXmailForm.N1Click(Sender: TObject);
var
    i:integer;
    f:file;
    Filename:string;
begin
    for i:=0 to ListBox1.Items.Count-1 do
    begin
        if ListBox1.Selected[i] then
        begin
            FileName:=ListBox1.Items.Strings[i];
            Label26.Caption:='附件:'+IntToStr(ListBox1.Items.Count-1)+'个。';
            ListBox1.Items.Delete(i);
            AssignFile(f,Filename);
            Reset(f);
            Label27.hint:=IntToStr(StrToInt(Label27.Hint)-Filesize(f));
            Label27.Caption:='总共:'+Label27.Hint+'Bytes';
            CloseFile(f);
            break;
        end
    end;
    if ListBox1.Items.Count=0 then
    begin
        N1.Enabled:=false;
        N2.Enabled:=false;
    end;
end;

procedure TXmailForm.SpeedButton1Click(Sender: TObject);
var
    i:integer;
begin
    if Edit20.text='' then
    begin
        ShowMessage('收信人的邮箱地址为空,不能发送');
        Exit;
    end;
    if Edit23.text='' then
    begin
        ShowMessage('没有发信人签名,不能发送');
    end;
    if Edit22.text='' then
    begin
        if (MessageDlg('没有主题,继续发送吗?',mtInformation,[mbYes,mbNo],0)=IDNO ) then
            Exit;
    end;
    Adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.sql.add('select * from 账号表 where 邮件地址=:mail');
    adoquery1.Parameters.clear;
    adoquery1.Parameters.CreateParameter('mail',ftstring,pdinput,20,edit23.text);
    adoquery1.Active:=true;
    if adoquery1.FieldByName('发送时是否验证').asboolean then
    begin
        IdSmtp1.AuthenticationType:=atLogin;
        idSmtp1.Username:=Edit23.text;
        idSmtp1.Password:=trim(Adoquery1.fieldbyname('密码').asstring);
    end
    else
        IDSmtp1.AuthenticationType:=atNone;
    idsmtp1.Host:=Adoquery1.fieldbyname('发送邮件服务器').asstring;
    idsmtp1.Port:=25;
    try
        Idsmtp1.Connect(Adoquery1.fieldbyname('超时时间').asInteger);
    except
        ShowMessage('连接发送邮件服务器失败,请检查!');
        exit;
    end;
    try
        for i:=0 to ListBox1.Items.Count-1 do
        begin
            TIDAttachment.Create(Idmessage1.MessageParts,ListBox1.items.strings[i]);
        end;
        IdMessage1.Body.Clear;
        IdMessage1.Body.Assign(Memo1.lines);
        IDMessage1.From.Address:=Edit23.text;
        IDMessage1.Recipients.EMailAddresses:=trim(Edit20.text);
        if Edit21.text<>'' then
          IDmessage1.Recipients.Items[1].Address:=Edit21.text;
        IdMessage1.Subject:=Edit22.text;
        Idmessage1.Date:=Now;
        Idsmtp1.Send(IdMessage1);
    finally
      adoquery1.close;
      Idsmtp1.disconnect;
      showMessage('发送成功!');
    end;
end;

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

procedure TXmailForm.SpeedButton4Click(Sender: TObject);
var
    i,j,count:integer;
    filename:String;
begin
    ListBox2.Items.Clear;
    ListBox3.Items.Clear;
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 账号表 where 邮件地址=:mailaddress');
    adoquery1.Parameters.Clear;
    adoquery1.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,combobox1.text);
    adoquery1.active:=true;
    IdPop31.Host:=Adoquery1.fieldbyname('接收邮件服务器').asstring;
    IdPop31.Username:=ComboBox1.text;
    IdPop31.Password:=Adoquery1.fieldbyname('密码').asstring;
    IdPop31.Port:=110;
    try
        IdPop31.Connect(Adoquery1.fieldbyname('超时时间').asInteger);
    except
        ShowMessage('连接接收邮件服务器失败,请检查!');
        exit;
    end;
    try
        count:=IdPop31.CheckMessages;
        for i:=1 to count do
        begin
            ShowMessage('共有'+IntToStr(count)+'邮件,'+'正在读取第'+IntToStr(i)+'封邮件');
            IdMessage1.Clear;
            IdPop31.Retrieve(i,IdMessage1);
            if not Adoquery1.fieldbyname('是否保留副本').asboolean then
                IdPop31.Delete(i);
            ListBox2.Items.add(IDMessage1.Subject+'     '+IDMessage1.From.Address+'     '+DateTimeToStr(IDMessage1.Date));
            filename:=IntToStr(ListBox2.items.Count-1);
            IDMessage1.ContentType:='text/plain';
            IDMessage1.SaveToFile(filename,false);
            for j:=0 to pred(IDMessage1.MessageParts.Count) do
            begin
                Memo2.Clear;
                if IDMessage1.MessageParts.Items[j] is TIDText then
                begin
                    Memo2.Lines.add(TIDText(IDMessage1.MessageParts.Items[j]).Body.text);
                end;
                Memo2.lines.SaveToFile('content'+filename);
            end;
        end;
        showMessage('邮件接收完毕!');
    except
        ShowMessage('邮件接收出错,请检查!');
        Exit;
    end;
    IDPop31.Disconnect;
end;

procedure TXmailForm.ListBox2Click(Sender: TObject);
var
    i,j:integer;
begin
    ListBox3.Clear;
    Memo2.Clear;
    for i:=0 to ListBox2.Items.Count-1 do
    begin
        if ListBox2.Selected[i] then
        begin
            IdMessage1.Body.Clear;
            IdMessage1.MessageParts.Clear;
            memo2.lines.Clear;
            IdMessage1.LoadFromFile(IntToStr(ListBox2.ItemIndex),false);
            Memo2.lines.LoadFromFile('content'+IntToStr(i));
            for j:=0 to pred(IDMessage1.MessageParts.Count) do
            begin
                if IDMessage1.MessageParts.Items[j] is TIDText then
                begin
                    Memo2.Lines.add(TIDText(IDMessage1.MessageParts.Items[j]).Body.text);
                end;
                if IDMessage1.MessageParts.Items[j] is TIDAttachment then
                begin
                    ListBox3.Items.add(TIdAttachment(IDMessage1.MessageParts.Items[j]).Filename);
                end;
            end;
            Edit25.text:=IdMessage1.From.Address;
            Edit26.text:=IdMessage1.Subject;
        end;
    end;
end;

procedure TXmailForm.RadioButton6Click(Sender: TObject);
begin
    initiateaddress;
end;

procedure TXmailForm.N3Click(Sender: TObject);
var
    i,j:integer;
    filename:String;
begin
    for i:=0 to ListBox3.Count-1 do
    begin
        if ListBox3.Selected[i] then
        begin
            filename:=ListBox3.Items[i];
            for j:=0 to pred(IDMessage1.MessageParts.Count) do
            begin
                if IDMessage1.MessageParts.Items[j] is TIDAttachment then
                begin
                    if TIdAttachment(IDMessage1.MessageParts.Items[j]).Filename=filename then
                    begin
                        TIDAttachment(IDMessage1.MessageParts.Items[j]).SaveToFile(filename);
                        showmessage('复制文件 '+filename+' 结束!');
                    end;
                end;
            end;
        end;
    end
end;

procedure TXmailForm.N4Click(Sender: TObject);
var
    i,j:integer;
    filename:String;
begin
    for i:=0 to ListBox3.Count-1 do
    begin
        if ListBox3.Selected[i] then
        begin
            if SaveDialog1.Execute then
                filename:=SaveDialog1.FileName;
            for j:=0 to pred(IDMessage1.MessageParts.Count) do
            begin
                if IDMessage1.MessageParts.Items[j] is TIDAttachment then
                begin
                    if TIdAttachment(IDMessage1.MessageParts.Items[j]).Filename=filename then
                    begin
                        TIDAttachment(IDMessage1.MessageParts.Items[j]).SaveToFile(filename);
                        showmessage('复制文件 '+filename+' 结束!');
                    end;
                end;
            end;
        end;
    end
end;


end.

⌨️ 快捷键说明

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