📄 main.pas
字号:
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 + -