使用TIdSMTP及TIdMessage控件实现邮件发送功能。
如下图所示新建工程:
后台代码如下:
在C盘根目录下新建文件:SMTP.ini
文件内容格式如下:
如下图所示新建工程:
后台代码如下:
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
- IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
- IdSMTP;
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Edit1: TEdit;
- Label2: TLabel;
- Edit2: TEdit;
- Label3: TLabel;
- Edit3: TEdit;
- Label4: TLabel;
- Edit4: TEdit;
- ListBox1: TListBox;
- Button1: TButton;
- IdSMTP1: TIdSMTP;
- IdMessage1: TIdMessage;
- memoMsg: TMemo;
- Label5: TLabel;
- Edit5: TEdit;
- Label6: TLabel;
- Edit6: TEdit;
- procedure FormCreate(Sender: TObject);
- procedure IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
- const AStatusText: string);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure Status(AMsg: string);
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- uses INIFiles;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Button1.Enabled := False;
- try
- with IdMessage1 do begin
- Clear;
- From.Text := Trim(Edit1.Text);
- Recipients.Add.Text := Trim(Edit2.Text);
- Subject := Trim(Edit5.Text);
- Body.Assign(memoMsg.Lines);
- end;
- with IdSMTP1 do begin
- Host := Trim(Edit6.Text);
- Username := Edit3.Text;
- Password := Edit4.Text;
- Connect; try
- Send(IdMessage1);
- finally
- Disconnect;
- end;
- end;
- Status('Completed');
- finally
- Button1.Enabled := True;
- end;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- var
- LINIFile: string;
- begin
- LINIFile := 'c:/SMTP.ini';
- if FileExists(LINIFile) then begin
- with TINIFile.Create(LINIFile) do
- try
- Edit1.Text := ReadString('Main', 'From', '');
- Edit2.Text := ReadString('Main', 'To', '');
- Edit3.Text := ReadString('Main', 'UserName', '');
- Edit4.Text := ReadString('Main', 'Password', '');
- Edit5.Text := ReadString('Main', 'Subject', '');
- Edit6.Text := ReadString('Main', 'SMTP Server', '');
- memoMsg.Lines.Text := ReadString('Main', 'Message', '');
- finally
- Free;
- end;
- end;
- end;
- procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
- const AStatusText: string);
- begin
- Status(AStatusText);
- end;
- procedure TForm1.Status(AMsg: string);
- begin
- ListBox1.ItemIndex := ListBox1.Items.Add(AMsg);
- Application.ProcessMessages;
- Application.ProcessMessages;
- Application.ProcessMessages;
- end;
- end.
文件内容格式如下:
- [Main]
- From=XXXXXXXX@sina.com
- To=ZZZZZZZZ@hotmail.com
- Subject=Test
- SMTP Server=smtp.sina.com
- Message=I Miss You!
- UserName=XXXXXXXX
- Password=YYYYYYYY