如何使用Delphi编写邮件特快专递程序
“邮件快递”这个词现在已经被广大网友所熟知。就像网络上的EMS,可以直接把邮件发到对方邮箱。邮件发出后,对方可以立即收到。Foxmail在其最新的4.0版本中也加入了这一功能。作为一个编程爱好者,你是否也想知道如何编程实现这个功能?下面就和本文一起揭开“邮件快递”的神秘面纱:
一、实现原理。
在Outlook Express中,您可以通过查看电子邮件的属性来获取邮件头信息。我们拿一个不是快件的普通邮件来分析一下。下面是作者发来的一封邮件的标题信息:
收到:来自sm1.163.com([202.108.44.203])通过people mail . com . cn(JetMail 2 . 5 . 3 . 0)
,SMTP id JM 1 AC 3c 063 EEC;2001年11月29日星期四07:20:25-0000
收到:由sm1.163.com(后缀)从徐波(未知[61 . 154 . 94 . 146])
,ESMTP id 99 cf 11 c 461061
收到;2001年1 1月29日星期四15时12分49秒+0800(中央标准时间)
……
从表头信息可以看出,邮件投递的路线是从sm1.163.com→peoplemail.com.cn→徐波,其中徐波是我的机器,邮件通过sm1.163.com的中转站投递到目的地。我们通常所说的快件投递,就是将邮件不经过中转站,直接送到目的地。
我怎么知道目的地的地址?我们知道电子邮件地址由两部分组成:用户名和电子邮件域名(address.com)。我们可以通过向域名服务器发送“address.com”的MX指令查询来找到目的地址。可能会发现不止一个目的地。有时,这些目的地具有优先级,对应于邮件的优先级。你可以根据邮件的不同优先级来发送,也可以选择其中的任意一个。本文中的例子会选择反馈的第一个目的地来发送,读者可以根据实际需要进行改进。
二、使用的核心部件
本文将使用Indy控件集来编写域名查询和邮件发送程序。INDY的全称是Internet Direct(也叫Winshoes),是一个开源的、跨平台的、优秀的一套互联网控件。它支持大多数流行的互联网协议。Delphi 6已经包含了控件集。如果您使用的是以前版本的Delphi 6,请从Indy主页http://www.nevrona.com/Indy/Download.html.下载并安装控件集
第三,橱窗设计
在表单上放置三个TEdit组件、一个TMemo组件和四个Tlabel组件。使用的Indy组件有TIdDNSResolver、tid防冻剂、TIdSMTP和TIdMessage。其中TIdDNSResolver用于向域名服务器发送查询请求并得到结果,TIdMessage用于构建邮件,TIdSMTP用于发送邮件,tid防冻剂可以保证Indy的程序在工作时能够响应来自外界的消息(注:Indy同步工作,其他代码在读或写操作完成后才能执行,加入tid防冻剂通过调用应用程序响应来自外界的消息。ProcessMessage方法。)
位律师回复
0条评论