📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, clMailMessage, clPOP3, clMC, clSMTP, msgfrm,
clTcpClient;
type
TForm1 = class(TForm)
Label1: TLabel;
edtPop3Server: TEdit;
Label2: TLabel;
edtUser: TEdit;
Label3: TLabel;
edtPassword: TEdit;
clSMTP1: TclSMTP;
clPOP31: TclPOP3;
clMailMessage1: TclMailMessage;
btnComposeMail: TButton;
btnCheckMail: TButton;
lbMessages: TListBox;
Label4: TLabel;
Label5: TLabel;
edtSmtpServer: TEdit;
procedure btnCheckMailClick(Sender: TObject);
procedure btnComposeMailClick(Sender: TObject);
procedure lbMessagesDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnCheckMailClick(Sender: TObject);
var
i, count: Integer;
begin
if clPOP31.Active then Exit;
clPOP31.Server := edtPop3Server.Text;
clPOP31.UserName := edtUser.Text;
clPOP31.Password := edtPassword.Text;
clPOP31.Open();
try
lbMessages.Items.Clear();
count := clPOP31.MessageCount;
for i := 0 to count - 1 do
begin
clPOP31.RetrieveHeader(i, clMailMessage1);
if (clMailMessage1.Subject = '') then
begin
lbMessages.Items.Add(clMailMessage1.From);
end else
begin
lbMessages.Items.Add(clMailMessage1.Subject);
end;
end;
finally
clPOP31.Close();
end;
ShowMessage(Format('Collecting completed, %d messages in the mailbox', [count]));
end;
procedure TForm1.btnComposeMailClick(Sender: TObject);
var
dlg: TMessageForm;
begin
if clSMTP1.Active then Exit;
dlg := TMessageForm.Create(nil);
try
if dlg.ShowModal() = mrOK then
begin
clMailMessage1.BuildMessage(dlg.memBody.Lines.Text, '');
clMailMessage1.From := dlg.edtFrom.Text;
clMailMessage1.ToList.Text := dlg.edtTo.Text;
clMailMessage1.Subject := dlg.edtSubject.Text;
dlg.btnSend.Enabled := True;
clSMTP1.Server := edtSmtpServer.Text;
clSMTP1.UserName := edtUser.Text;
clSMTP1.Password := edtPassword.Text;
clSMTP1.Open();
try
clSMTP1.Send(clMailMessage1);
finally
clSMTP1.Close();
end;
ShowMessage('The message was sent successfully');
end;
finally
dlg.Free();
end;
end;
procedure TForm1.lbMessagesDblClick(Sender: TObject);
var
dlg: TMessageForm;
begin
if clPOP31.Active or (lbMessages.ItemIndex < 0) then Exit;
clPOP31.Server := edtPop3Server.Text;
clPOP31.UserName := edtUser.Text;
clPOP31.Password := edtPassword.Text;
clPOP31.Open();
dlg := TMessageForm.Create(nil);
try
clPOP31.Retrieve(lbMessages.ItemIndex, clMailMessage1);
dlg.edtFrom.Text := clMailMessage1.From;
dlg.edtTo.Text := Trim(clMailMessage1.ToList.Text);
dlg.edtSubject.Text := clMailMessage1.Subject;
clMailMessage1.GetBodyText(dlg.memBody.Lines);
dlg.edtFrom.ReadOnly := True;
dlg.edtTo.ReadOnly := True;
dlg.edtSubject.ReadOnly := True;
dlg.memBody.ReadOnly := True;
dlg.btnSend.Enabled := False;
dlg.ShowModal();
finally
dlg.Free();
clPOP31.Close();
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -