📄 unit1.~pas
字号:
SMTP1.AuthenticationType := atLogin;
SMTP1.username:= edit2.text;
SMTP1.Password := edit1.text;
SMTP1.Host := edit3.text;
SMTP1.Port :=25;
try
SMTP1.Connect;
except
Showmessage('连接SMTP服务器失败!');
Exit;
end;
try
with IdMsg do
begin
body.Clear;
Body.Assign(memo1.lines);
From.address := edit5.text;
Recipients.EMailAddresses :=edit6.text;
Subject:=edit4.text
end;
SMTP1.Send(IdMsg);
finally
showmessage('您的信件已成功发送');
SMTP1.Disconnect;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
memo1.Lines.Add(opendialog1.filename);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=false;
mInifile:=Tinifile.Create('SENDMAIL.ini');//创建保存信息的文件名
Edit1.ReadOnly:=true;
Edit2.ReadOnly:=true;
Edit3.ReadOnly:=true;
Edit4.ReadOnly:=true;
Edit5.ReadOnly:=true;
Edit6.ReadOnly:=true;
Edit7.ReadOnly:=true;
Edit8.ReadOnly:=true;
Memo1.ReadOnly:=true;
Edit1.Text:=mInifile.ReadString('INFORMATION','PW','');
Edit2.Text:=mInifile.ReadString('INFORMATION','ACOUNT','');
Edit3.Text:=mInifile.ReadString('INFORMATION','MailSRV','');
Edit4.Text:=mInifile.ReadString('INFORMATION','TOPIC','');
Edit5.Text:=mInifile.ReadString('INFORMATION','ADDRESSER','');
Edit6.Text:=mInifile.ReadString('INFORMATION','ADDRESSEE','');
Edit7.Text:=mInifile.ReadString('INFORMATION','PORT','');
Edit8.Text:=mInifile.ReadString('INFORMATION','IPADDRESS','');
Memo1.Text:=mInifile.ReadString('INFORMATION','CONTENT','');
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Edit1.ReadOnly:=false;
Edit2.ReadOnly:=false;
Edit3.ReadOnly:=false;
Edit4.ReadOnly:=false;
Edit5.ReadOnly:=false;
Edit6.ReadOnly:=false;
Edit7.ReadOnly:=false;
Edit8.ReadOnly:=false;
Memo1.ReadOnly:=false;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
mInifile.WriteString('INFORMATION','PW',Edit1.Text);
mInifile.WriteString('INFORMATION','ACOUNT',Edit2.Text);
mInifile.WriteString('INFORMATION','MailSRV',Edit3.Text);
mInifile.WriteString('INFORMATION','TOPIC',Edit4.Text);
mInifile.WriteString('INFORMATION','ADDRESSER',Edit5.Text);
mInifile.WriteString('INFORMATION','ADDRESSEE',Edit6.Text);
mInifile.WriteString('INFORMATION','PORT',Edit7.Text);
mInifile.WriteString('INFORMATION','IPADDRESS',Edit8.Text);
mInifile.WriteString('INFORMATION','CONTENT',Memo1.Text);
Edit1.ReadOnly:=true;
Edit2.ReadOnly:=true;
Edit3.ReadOnly:=true;
Edit4.ReadOnly:=true;
Edit5.ReadOnly:=true;
Edit6.ReadOnly:=true;
Edit7.ReadOnly:=true;
Edit8.ReadOnly:=true;
Memo1.ReadOnly:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
WSAData: TWSAData; // Winsock数据结构
DestAddress: DWord; // 目标主机IP地址
RequestDataBuffer: Pointer; // 请求数据缓冲区指针
ReplyDataBuffer: Pointer; // 应答数据缓冲区指针
ICMPEchoReplyBuffer: PIcmp_Echo_Reply;// ICMP回波应答缓冲区
IPOptionInfo: TIP_Option_Information; // 待发送数据包的IP选项
TheIPAddress:string;
begin
//TheIPAddress:=PChar(IP);
TheIPAddress:=Edit8.Text;
if WSAStartup($102,WSAdata) <> 0 then // 初始化Winsock
begin
ShowMessage('Winsock初始化失败!');
Exit;
end;
ICMPHandle := IcmpCreateFile; // 打开ICMP句柄
if ICMPHandle = INVALID_HANDLE_VALUE then // 错误处理
begin
ShowMessage('无法获得ICMP句柄!');
Exit;
end;
DestAddress := inet_addr(PChar(TheIPAddress)); // 将目标地址转换成网络格式
GetMem(RequestDataBuffer, PacketSize); // 分配请求数据缓冲区
FillChar(RequestDataBuffer^, PacketSize, $FF); // 填充请求数据缓冲区
FillChar(IPOptionInfo, SizeOf(IPOptionInfo), 0); // 填充IP选项数据
IPOptionInfo.TTL := 64; // 设置存活期
GetMem(ReplyDataBuffer, PacketSize); // 分配应答数据缓冲区
// 分配回波应答结构缓冲区
GetMem(ICMPEchoReplyBuffer, SizeOf(TIcmp_Echo_Reply) + PacketSize);
ICMPEchoReplyBuffer^.Data := ReplyDataBuffer; // 填入缓冲区指针
if IcmpSendEcho(ICMPHandle, DestAddress, // 发送回波请求,并等待回波应答
RequestDataBuffer, PacketSize,
@IPOptionInfo, ICMPEchoReplyBuffer,
SizeOf(TIcmp_Echo_Reply) + PacketSize, TimeOut) <> 0 then
{ ShowMessage('向' + TheIPAddress + // 显示测试结果
'地址发送了' + IntToStr(PacketSize) + '字节数据,'+ #10#13 +
'在' + IntToStr(ICMPEchoReplyBuffer^.RTT) + ' 毫秒内从' +
StrPas(inet_ntoa(TInAddr(ICMPEchoReplyBuffer^.Address))) +
'成功接收了' + IntToStr(ICMPEchoReplyBuffer^.DataSize) + '字节.') }
else
Button4.click;
FreeMem(ICMPEchoReplyBuffer); // 释放分配的内存空间
FreeMem(ReplyDataBuffer);
FreeMem(RequestDataBuffer);
IcmpCloseHandle(ICMPHandle); // 关闭ICMP句柄
if WSACleanup <> 0 then // 关闭Winsock
ShowMessage('无法关闭winsock!');
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
begin
if (trim(Edit1.Text)='') or (trim(Edit2.Text)='') or (trim(Edit3.Text)='') or
(trim(Edit4.Text)='') or (trim(Edit5.Text)='') or (trim(Edit6.Text)='') or
(trim(Edit8.Text)='') then
showmessage('请先设置‘服务器’、‘帐号密码’、‘发件人’、‘收件人’、‘主题’、‘监控地址’等信息!')
else
begin
Button1.Enabled:=false;
timer1.Enabled:=true;
button2.Enabled:=false;
Speedbutton1.Enabled:=false;
Speedbutton2.Enabled:=false;
end;
end
else
begin
Button1.Enabled:=true;
Timer1.Enabled:=false;
button2.Enabled:=true;
Speedbutton1.Enabled:=true;
Speedbutton2.Enabled:=true;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if (trim(Edit1.Text)='') or (trim(Edit2.Text)='') or (trim(Edit3.Text)='') or
(trim(Edit4.Text)='') or (trim(Edit5.Text)='') or (trim(Edit6.Text)='') or
(trim(Edit8.Text)='') then
showmessage('请先设置‘服务器’、‘帐号密码’、‘发件人’、‘收件人’、‘主题’、‘监控地址’等信息!!!')
else
begin
SMTP1.AuthenticationType := atLogin;
SMTP1.username:= edit2.text;
SMTP1.Password := edit1.text;
SMTP1.Host := edit3.text;
SMTP1.Port :=25;
try
SMTP1.Connect;
except
//Showmessage('连接SMTP服务器失败!');
Exit;
end;
try
with IdMsg do
begin
body.Clear;
Body.Assign(memo1.lines);
From.address := edit5.text;
Recipients.EMailAddresses :=edit6.text;
Subject:=edit4.text
end;
SMTP1.Send(IdMsg);
finally
//showmessage('您的信件已成功发送');
SMTP1.Disconnect;
end;
end;
end;
procedure TForm1.UpDown1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Timer1.Enabled:=false;
end;
procedure TForm1.UpDown1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Timer1.Enabled:=true;
end;
procedure TForm1.UpDown1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
Timer1.Interval:=StrToInt(Edit9.Text)*1000;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -