谁可以给我一个发EMAIL到163。的最简单的例子(50分)

  • 主题发起人 主题发起人 odbc1230
  • 开始时间 开始时间
O

odbc1230

Unregistered / Unconfirmed
GUEST, unregistred user!
一个按钮一按,就发EMAIL到163的DELPHI@163.com的邮箱去
 
编程发送E-mail


Delphi有关E-mail的组件有两个:NmPOP3和NmSTMP,它们都位于Internet 选项卡上,其中,NmPOP3

组件封装并实现POP3协议,用来从Internet POP3服务器上读取电子邮件;NmSTMP封装并实现STMP协议,

可用来向Internet的STMP服务器发送电子邮件。限于篇幅,我们不能两者都介绍,这里只用NmSTMP编写一

个发送E-mail的程序,至于NmPOP3,以后有机会再谈,或者在看完本文后你有兴趣,也可以借助于Delphi

的帮助文档尝试用NmPOP3编程。


我们先来看一下程序运行界面。图1是程序主窗体,上面有一个字符串网格(StringGrid)和三个按钮,它

们的容器是仅有一个标签的PageControl。单击“Clear”钮清除网格内容,单击“Send”钮发送E-mail

,单击“New Mail”

钮弹出图2所示的对话框,此对话框用来设置STMP服务器名称、发件人地址、收件人地址、发件人名称和邮

件主题,其中前三项必须填写,“Select File”按钮用来打开Open对话框,以便选取要发送的附件。


NmSTMP的属性和方法不多,关键的属性是Host(STMP服务器名称)和PostMessage (包含邮件信息),正

确设置了Host属性和PostMessage属性后,就可以用Connect 方法(连接服务器)和SendMail方法发送E-

mail了。


编写代码之前先要改变StringGrid1的一些缺省属性:ColCount属性为6, FixedCols属性为0,RowCount

属性为2,另外,将PageControl1的Align属性置为alClient。


以下是Unit1(主窗体)代码清单:

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms


Dialogs

Grids

ComCtrls

StdCtrls

Psock

NMsmtp;

type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

StatusBar1: TStatusBar;

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

NMSMTP1: TNMSMTP;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure NMSMTP1Failure(Sender: TObject);

procedure NMSMTP1SendStart(Sender: TObject);

procedure NMSMTP1Success(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

PageControl1.Pages[0].Caption:=‘Send Mail’;

self.Caption:=‘My Mailer’;

self.BorderIcons:=[biSystemMenu

biMinimize];

self.BorderStyle:=bsSingle;

Application.Icon:=self.Icon;

Application.Title:=self.Caption;

with StringGrid1 do

begin

Cells[0

0]:=‘Host’;

Cells[1

0]:=‘To Address’;

Cells[2

0]:=‘From Address’;

Cells[3

0]:=‘Your Name’;

Cells[4

0]:=‘Subject’;

Cells[5

0]:=‘File’;

end;

Button2.Enabled:=False;

Button3.Enabled:=False;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

i:Integer;

begin

for i:=1 to StringGrid1.RowCount-2 do

with Nmsmtp1 do

begin

Host:=StringGrid1.Cells[0

i];

PostMessage.ToAddress.Add(StringGrid1.Cells[1

i]);

PostMessage.FromAddress:=StringGrid1.Cells[2

i];

PostMessage.FromName:=StringGrid1.Cells[3

i];

PostMessage.Subject:=StringGrid1.Cells[4

i];

PostMessage.Attachments.Add(StringGrid1.Cells[5

i]);

Connect;

Sendmail;

DisConnect;

end;

Button2.Enabled:=False;

Button3.Click;

end;

procedure TForm1.Button3Click(Sender: TObject);

var

i:Integer;

begin

with StringGrid1 do

begin

for i:=1 to RowCount-2 do

begin

Cells[0

i]:=‘’;

Cells[1

i]:=‘’;

Cells[2

i]:=‘’;

Cells[3

i]:=‘’;

Cells[4

i]:=‘’;

Cells[5

i]:=‘’;

end;

RowCount:=2;

end;

Button2.Enabled:=False;

Button3.Enabled:=False;

end;

procedure TForm1.NMSMTP1Failure(Sender: TObject);

begin

StatusBar1.SimpleText:=‘Mail send failure!’;

end;

procedure TForm1.NMSMTP1SendStart(Sender: TObject);

begin

StatusBar1.SimpleText:=‘Now Sending...’;

end;

procedure TForm1.NMSMTP1Success(Sender: TObject);

begin

StatusBar1.SimpleText:=‘Send Success!’;

end;

end.

Button1是“New Mail”按钮,Button 2是“Send”按钮,Button3是“Clear” 按钮。

以下是Unit2代码清单:

unit Unit2;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms


Dialogs

StdCtrls;

type

TForm2 = class(TForm)

OpenDialog1: TOpenDialog;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.FormCreate(Sender: TObject);

begin

self.Caption:=‘New Mail’;

self.BorderStyle:=bsDialog;

end;

procedure TForm2.FormActivate(Sender: TObject);

begin

Edit1.Text:=‘’;

Edit2.Text:=‘’;

Edit3.Text:=‘’;

Edit4.Text:=‘’;

Edit5.Text:=‘’;

Label1.Caption:=‘No File’;

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

Label1.Caption:=Opendialog1.Filename;

end;

procedure TForm2.Button2Click(Sender: TObject);

var

i:Integer;

begin

if (Edit1.Text<>‘’) and (Edit2.Text<>‘’) and (Edit5.Text<>‘’)

and (Label1.Caption<>‘No File’) then

begin

with Form1.StringGrid1 do

begin

RowCount:=RowCount+1;

i:=RowCount-2;

Cells[0

i]:=Edit1.Text;

Cells[1

i]:=Edit2.Text;

Cells[2

i]:=Edit5.Text;

Cells[3

i]:=Edit3.Text;

Cells[4

i]:=Edit4.Text;

Cells[5

i]:=Label1.Caption;

end;

Form1.Button2.Enabled:=True;

Form1.Button3.Enabled:=True;

end;

self.Hide;

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

self.Hide;

end;

end.

Edit1、Edit2、Edit3、Edit4、Edit5编辑框分别用于填写服务器名称、收件人地址、发件人名称、

邮件主题和发件人地址。

邮件主题和发件人地址。
 
發郵件只需要smtp,我給你一個例子。
 
如需要原代嗎,請回信。
 
>>iapollo
用的是Delphi幾?我的是在FastNet上啊!

用iapollo的方法,需要注意能不能發給自己。
從DELPHI@163.com發到DELPHI@163.com試試。
 
多人接受答案了。
 
后退
顶部