创建自己Eail服务器(100分)

  • 主题发起人 主题发起人 liu5
  • 开始时间 开始时间
L

liu5

Unregistered / Unconfirmed
GUEST, unregistred user!
我想创建自己的Eail服务器,但没有相关的资料,那位大虾又相关的代码和资料请
传给我;

我现在有收发Email的源代码,但做Email服务器,要给每个用户分配指定大小的空间
,并能保存接受到的Email,还要有相关的用户信息,我实在是无从下手,请各位大虾们
指点迷经。
 
你可以看看有关sendmail(linux平台)的源代码
 
有相应的应用程序么,小点的?
 
可以看 imail这个东西。
 
sendmail 和 imail 是opensource?
给个url好吗?
 
不是opensource,还要收费的。
 
看看qmail源代码, qmail比sendmail简单多了,而且模块化强,
你可以修改其中的某些模块。入可以修改用户信息等。
索易的邮件系统就是在qmail基础上,替换了用户登陆模块。
这样利于用户统计、分析等。
 
请问那里有qmail的源码。如果各位有的话,可以发给我吗?
 
我对Qmail以前没有接触过。
 
http://www.qmail.org/
有源码的
 
利用Delphi编程发送E-mail



接发E-mail是许多“网虫”必修的功课,E-mail工具软件也很多,国外有Microsoft的Outlook Express、The Bat等,国内则有FoxMail这样的精品。实,利用可视化编程工具Delphi4.0也能够制作出自己的E-mail软件。



Delphi4.0有关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编辑框分别用于填写服务器名称、收件人地址、发件人名称、邮件主题和发件人地址。
 
飞来石,请注意换行
 
后退
顶部