?? unit1.~pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, IdBaseComponent, IdMessage, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP;
type
TSMTPForm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
btnSend: TButton;
AttachAdd: TButton;
GroupBox6: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
HostName: TEdit;
HostPort: TEdit;
EditFrom: TEdit;
EditTo: TEdit;
EditUser: TEdit;
EditSubject: TEdit;
MemoMesg: TMemo;
AttachmentList: TListBox;
MemoInfo: TMemo;
EditPass: TMaskEdit;
MailMessage: TIdMessage;
IdSMTP: TIdSMTP;
AddAttachDlg: TOpenDialog;
Label9: TLabel;
EditCC: TEdit;
Label10: TLabel;
EditBCC: TEdit;
procedure btnSendClick(Sender: TObject);
procedure IdSMTPConnected(Sender: TObject);
procedure IdSMTPDisconnected(Sender: TObject);
procedure AttachAddClick(Sender: TObject);
procedure AttachmentListKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure IdSMTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure IdSMTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdSMTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SMTPForm: TSMTPForm;
implementation
{$R *.dfm}
procedure TSMTPForm.btnSendClick(Sender: TObject);
begin
MemoInfo.Clear;
//校驗服務器屬性
if (Trim(HostName.Text)='') or (Trim(HostPort.Text)='') then
begin
ShowMessage('請設置所要連接的SMTP服務器屬性!');
HostPort.Text:='25';
HostName.SetFocus;
Exit;
end;
//檢測地址信息
if (Trim(EditFrom.Text)='') or (Trim(EditTo.Text)='') then
begin
ShowMessage('請輸入收信人或者發信人地址!');
EditFrom.SetFocus ;
Exit;
end;
//用戶賬號檢驗
if (Trim(EditUser.Text)='') or (Trim(EditPass.Text)='') then
begin
ShowMessage('請正確輸入用戶登錄帳號和密碼!');
EditUser.SetFocus;
Exit;
end;
//對MailMessage屬性進行賦值
with MailMessage do
begin
Subject := EditSubject.Text; //郵件主題
Body.Assign(MemoMesg.Lines); //郵件正文
From.Address:=Trim(EditFrom.Text); //發信人地址
Recipients.EMailAddresses := Trim(editTo.Text); //收件人地址
CCList.EMailAddresses :=EditCC.Text;
BCCList.EMailAddresses:=EditBCC.Text;
// for indexnum:=0 to AttachmentList.Items.Count do
// TIdAttachment.Create(MailMessage.MessageParts,);
end;
//設置連接到服務器屬性
with IdSMTP do
begin
Host:=Trim(HostName.Text); //SMTP服務器地址
Port:=StrToInt(Trim(HostPort.Text)); //SMTP服務器端口
UserName:=Trim(EditUser.Text); //用戶賬號
Password:=Trim(EditPass.Text); // 用戶密碼
end;
//連接到服務器
MemoInfo.Lines.Add('準備連接到服務器!'+HostName.Text);
try
IdSMTP.Connect(); //調用 Connect連接服務器
except //連接失敗
begin
MemoInfo.Lines.Add('無法連接到服務器!'+HostName.Text);
Exit;
end ;
end;
//檢測SMTP服務器是否需要驗證
if (IdSMTP.AuthSchemesSupported.IndexOf ( 'LOGIN' ) <> -1) then
begin //服務器要求驗證
MemoInfo.Lines.Add('服務器要求驗證');
IdSMTP.AuthenticationType:=atlogin;
end
else
begin //服務器不要求驗證
MemoInfo.Lines.Add('服務器不需要驗證');
end;
MemoInfo.Lines.Add('開始驗證');
try
if IdSMTP.Authenticate then //驗證通過
MemoInfo.Lines.Add('服務器驗證通過')
else
MemoInfo.Lines.Add('服務器驗證失敗'); //驗證失敗
except
begin
MemoInfo.Lines.Add('服務器驗證失敗');
IdSMTP.Disconnect;
exit;
end;
end;
//發送信件
try
IdSMTP.Send(MailMessage);
except
MemoInfo.Lines.Add('發送失敗');
end;
IdSMTP.Disconnect;
end;
procedure TSMTPForm.IdSMTPConnected(Sender: TObject);
begin
MemoInfo.Lines.Add('已經連接到服務器!'+HostName.Text)
end;
procedure TSMTPForm.IdSMTPDisconnected(Sender: TObject);
begin
MemoInfo.Lines.Add('斷開連接');
end;
procedure TSMTPForm.AttachAddClick(Sender: TObject);
begin
if AddAttachDlg.Execute then
begin
AttachmentList.Items.Add(AddAttachDlg.FileName);
TIdAttachment.Create(MailMessage.MessageParts, AddAttachDlg.FileName);
end;
end;
procedure TSMTPForm.AttachmentListKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
index:Integer;
begin
//有效性檢查
if AttachmentList.ItemIndex=-1 then
exit;
//如果按Delete鍵,則刪除該附件
if Key<>VK_DELETE then
exit;
//刪除列表中項
index:=AttachmentList.ItemIndex;
AttachmentList.Items.Delete(index);
MailMessage.MessageParts.Delete(index);
end;
procedure TSMTPForm.IdSMTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
MemoInfo.Lines.Add('發送信件成功');
end;
procedure TSMTPForm.IdSMTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
MemoInfo.Lines.Add('開始發送信件');
end;
procedure TSMTPForm.IdSMTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
MemoInfo.Lines.Add('正在發送信件');
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -