2024年3月9日发(作者:)

维普资讯

第23卷

28

第2期 

脑2 

计算机工程 

2002年2月 

February 2002 

Computer Engineering 

开发研究与设计技术 文章编号:1ooo— 28 帅2102—0284—02 文t}呆识码:A 中围分类号:TP393.098 

由Delphi实现局域网的自动定时发送邮件 

李甓军,冯珊 

(华中科技大学系统工程研究所,武汉430074) 

擅要:介绍如何用软件开发工具Delphi与邮件服务 ̄Exchange5 5进行通信,从而实现手工和自动定时向指定信箱发送邮件的功能。 

*翻:Exchange5 5;Delphi;TNMSmtp 

Sending Mail Automaticauy in LAN Using Delphi 

Ll un FE—G Shah 

(InstituteofSystem EmRineering,HnazhongUeivers畸ofScience and Technology,Wuhan 43o074 

[Ahstract]Thepaperintroduces howto commanicat ̄with Exchange 5.5whichworks_s amail server#adto sendmail automaticallyin 

LAN口“_g Delphi. 

IXey words]Exchange5.5;Delphi;TNMSmlp 

随着计算机自 应用逐渐普遍,越来越多的单位实现了部 

门工作滴程的计算机化。在日常的系统运行过程中,监视系 

统的运行状况成了系统管理员的一项不可或缺的工作。通常 

的做法是由人工处理系统的监视日志,定期将日志文件发送 

给指定的系统维护^员或是软件开发人员。本文讨论如何在 

Delphi中通过同邮件服务器Exchange5.5的信息交互,将系统 

日志文件作为附件,由系统管理员手工或自动定时向邮箱发 

送邮件,阻提高办公效率。 

Exchange S ̄fver的目录机制为翁们管理Ex曲ange Server 

的内部对象提供了一致的层捩结构。其中包括Exchange 

Server组织(Organization)、站点(site)和服务器(scf_ver)的所有 

配置信息,目录也包含了地址簿信息。利用目录服务,管理 

员可以查找到所有的邮箱信息。 

( 消息传输代理 

MTA; ̄ExehangeServer中消 鼠流动的基础。它既对站点 

内部的服务器传输消息,同时也为其他站点的服务器传输消 

息a tvrrA, ̄为Exchange S6.rv ̄.的内部销患传递机制,它提供 

了很强的控制功能,比如管理员可以控制消息的大小、消息 

传送的路由表等。 

(4)系统助理 

系统助理是个辅助性的服务,但是Exchange Server的许 

l Exchange5.5简介 

Micms Exchange是一个基于电子邮件的群件系统, 

是一十客户/服务器结构的、集成式系统监控和管理的电子 

信息交换系统。这十系统提供培组织集成的电子邮件、计划 

调度、文档共享、电子表单和定制应用程序。它的服务器端 

运行于Windows NT/2(i ̄Server,并与之紧密集成,具有一 

致的安全模型,多台Excl1angc曝务器可协同工作,并支持广 

泛的客户平台,如DOs、windows9X/NT/20OO,Macintosh 

等,在功能上,Exchange超越了传统的电子邮件系统,能更 

方便地收发电子邮件、进行小组讨论、访问公告栏等等,能 

更方便有效地管理和堆护系统,并与Weh紧密榴联, 

E)cch 与IlS相辅相成,是建设全面的企业级新型阿络或 

I腑 ld的基础之一。 

多工作由它来完成,列举如下: 

当管理员添加新邮箱时,系统助理会产生与邮籍有关 

的昏幕地址和E-mai1地址。 

MrA传翰消息时可能会用到系统助理来解析收件人 

地址,或者把目录中的分发表(Distrih. ̄tion List)展开成一组 

收件人地址。 

检查目录复翩的一致性。 

保存和管理邮箱的数字签名和加密信息。 

Echaxnge Server作为一个消息系统平台,包含一系列与 

消息有关的服务,Exchange S ̄rvcc的核心包括4十系统服 

务:信息存储服务、目录服务、消息传精代理和系统助理服 

务,当我们在服务器上安装了Exchange Server2.后,这些服 

务会自动被启动。以后客户连接到Exchang ̄Server时,这些 

服务协同完成客户的请求。其功能分别如下: 

(1)信息存储服务 

它提供对消息数据库的存储和读取访问,Exchange 

Sefvff'的信息存储分为公共信息存储和鞋有信息存储。公共 

信息存储包含所有的公共文件央信息,私有信息存储包含当 

前服务器上的所有用户的邮箱信息。 

(2)目录服务 

2使用DeIph滨现邮件发送 

(1)TNMSmtp. ̄件简介 

在Delphi中提供了 ̄l"NMSmtp,为用户提供了外部编 

程的接口从而实现对邮件的发送。 

下面简要介绍一下这十控件的常见属性、方j击和事件: 

I)属性 

host:要连接的邮件服务器 

作者倚介:李铁军(1978~),男,在职礤士生、助教,研究方向: 

智能决策支持系统(IDSS)、分布式信息系统、盘业ERP、电子商 

务等;冯珊,教授、博导 

收藕日期:2001・05一l8 

284一 

维普资讯

p :邮件服务使用的端口号 

PostMessage:要发送的信息,其中: 

Attachments:发送邮件的附件 

Body:发送邮件的正文 

FromAddresS:发送邮件的发件人 

ToAddress:发送邮件的收件人 

Subject:发送邮件的主题 

2)事件 

SMTP ServerConnect:当控件尝试和邮件服务器连接 

时触发 

SMTP ServerConnecifonFailed:当连接邮件服务器失 

败时触发 

SMTP ServerlnvalidHo*t::当邮件服务器不存在时触发 

SMTP ServerAttachmentNotFotmd:当要发送的附件没 

有找到时触发 

SMTP ServerDisconnect:当与邮件服务器断开连接时 

触发 

SMTP ServerFailure:当邮件发送失败时触发 

SMTP Serve*Success:当邮件发送成功时触发 

SMTP ServerRec ientNotFound:当收件人没有找到时 

触发 

3)方法 

connect:与邮件服务器连接 

disconnect:与邮件服务器断开连接 

sondmail:发送指定邮件 

(2)实现对邮件的发送 

系统首先莆要3 ̄Exchange邮件服务器建立连接,然后填 -

入要发送邮件的发件人、收件人、主题、正文和附件。单击 

按钮“发送flee”,则将邮件发送至收件人邮箱内。若还需 

要定时发送,则单击按钮“开始定时 ,则每隔l0分钟系统 

会自动将指定的邮件发送至收件人邮箱内。如图l所示。 

瞄1局壤阿内曲捧件发送 

下面主要介绍发送邮件部分的代码: 

procedure Tfrmmal1.Bln

__

MailC]icHSender:TObjee0; 

Ⅲ 

lvs-Subjeel,kks-Body:String; 

i:integer; 

begin 

try 

osFromAdd:=ed sendmail.text; 

0sToAdd:=ed代ceiv ̄add.Text: 

osAttachNline:=ed artach.Text: 

vis-su bjcct: ed_su埘ect.Text 

ri_-Otom detaiLLines.Count-1 do 

vis-body:=ivs ̄d什re

_

detail.Lines.Stringslil; 

,osToAd d'lvs-Subject,vis_Body 

osAttachNam ̄); 

Except 

_

e ̄or.Line.Add{TimeToStt ̄Time)+’不镌连接邮件最务 

} 发送邮件中簟 ’); 

end; 

end; 

procedure T ̄m

_

mail.uSendMai!(IvsJ[on,IvsJo,Ivs

_

Sobject, 

lvs-B ̄y,vis

_

Attach:Strlng); 

begin 

Smtp Server.Clearhrameters; 

SMtpServer.PmtMemag ̄FromAddress: IvsFrom: 

__

Smtp Server.PostMessage.Su bjeet:=Ivs_Sub批ct; 

Smtp Server.PostMessage.ToAddress.Clear; 

Smtp

_

Server.PmtMessage.ToAddress.Add(IvLT0】; 

ifivs

attaeh o”then 

_

Sm ̄p

_

Server.PostMemage.Attachmelts.Addnvs

_

Attach); 

SmtpServer.PostMessage.Body.Clear; 

_

Smtp

_

S ̄rver.PostMessag ̄oBody.Add(Ivs

_

Body); 

try 

Smtp Server.esndMail; 

Except 

_

error.Lines.Add(TimeToStr(Time)+ 不能连接 件鼍务 

} 发送 件中毒 ’); 

ServerConneet Fjt ̄e; 

end; 

end; 

在这个实例中,系统连接的Exchan窖e邮件服务器地址是 

j 92.168.I.3,发件人和收件人的邮箱均)jt'o:55@192.168 l 3. 

在填写好邮件主题和内容之后.单击按钮“选择附件”.会 

打开标准Windows窗口让用户选择需要发送的附件。确定无 

误 后,单击按钮“发送邮件”后.系统调用过程 

uSendMail对用户输入的邮件各个部分进行处理.并发送至 

收件人。发送过程中如果出现错误,系统会自动将错误信息 

保留下来供用户查看。 

3结束语 

通过使用此软件,用户可耻将日常维护工作所产生的系 

统日志文件作为邮件的附件手工或自动定时发送蛤指定收件 

人.可 减少系统管理人员在日志处理中的工作量,进而提 

高系统的运行效率。 

参考文藏 

1 Microsoft希望图书创作宣译Microsoft Exchange Server 5.0棱心 

技术北京:科学出版社.1998 

2 Teixeira s Dclphi5开发^员指南北京:机械工业出版社、2000 

285—