第五章：给留言簿增加自动发E-Mail功能

ASP本身没有发送邮件的能力，但是如果你希望用ASP来发送E-MAIL（例如：你有一个消息，只想让那些在你的留言薄上留了言的上网者们知道，你希望上网者在你的留言薄上填写完成后，你的留言簿便自动将该消息E-MAIL给留言的上网者），那么你需要安装一个ASP组件。并借助这些组件来帮你实现邮件的自动发送、回复等工作。 如果你的ASP及WEB数据库的运行平台是IIS4（Internet Information Server 4.0），你可以使用CDONTS.DLL。如果你已经缺省安装过NT 4.0 Option Pack，CDONTS.DLL便存放在你机器的C:\Winnt\System32\目录下面。有了该组件我们还不能立即应用它，在对它进行应用之前我们必须先完成组件的注册，那么怎样才能对CDONTS.DLL进行注册呢？我们可以在MS-DOS方式下进入到CDONTS.DLL所在的目录C:\Winnt\System32\下输入： c:\winnt\system32>regsvr32 cdonts.dll （如果我们想将其御载可用指令： c:\winnt\system32>regsvr32/u cdonts.dll) 在完成了组件的注册后，现在我们可以开始来解说如何对该组件的使用。我们可以用下面简单的脚本来给留言簿的添加自动发E-MAIL的功能。
< % Dim MailObject Dim Email Email = Request.form("Email") Set MailObject = Server.CreateObject("CDONTS.NewMail") Set myMail = Server.CreateObject("CDONTS.NewMail") myMail.Subject = "欢迎您下次再来" MailObject.Send "你本人的E-MAIL", Email ,"欢迎您下次再来给我们留言。" myMail.Send Set myMail=Nothing %> 将上述的代码COPY到manage2.asp 去，一个简单的通过ASP来发送E-MAIL的留言簿就实现了。也许你并不会满意这种发E-MAIL的方式，理由很简单：因为为了答谢你的网友对你的支持，你昨晚熬夜足足写了几千字（也许是我说少了）的感激话语，今早一大早起来才发现原来上述的留言簿竟然未具备发附件的功能，瞧，这有多气人的。还好，原来CDONTS.DLL也可以用来发送附件，事不宜迟，我们立即就将其奉献出来。
< % Dim MailObject Dim Email Email = Request("Email") Set MailObject = Server.CreateObject("CDONTS.NewMail") att_file="D:\cwj\GO-asp\guestbook5\email.txt" f_name="email.txt" MailObject.From="你本人的E-MAIL" MailObject.To = Email MailObject.Subject="感谢您对我们工作的支持" MailObject.Body="感谢您对我们工作的支持" MailObject.AttachFile att_file,f_name MailObject.Send %> 只需将上述的代码COPY下来用以取代第一个实例，我们的留言簿便能实现自动发附件功能。在这里值得我们注意的是：att_file="D:\cwj\GO-asp\guestbook5\email.txt" 必须是我们放附件的绝对路径。
其实除了CDONTS.DLL 组件外，有许多由第三方厂商开发的组件你也可以使用。例如据说连Intel公司也在用的ASPmail组件和似乎很受欢迎的w3 Jmail等等组件。能受到大家的欢迎，个中原由自是不言而宣的，我们可以直接从以下地方去下载它们。 ASPmail组件的下载地址：http://www.flicks.com/ASPMail/intro.htm Jmail组件的下载地址：http://download.dimac.net/jmail/jmail.exe
说实际的，我的第一个用ASP来发送E-MAIL的留言簿所用的组件就是ASPmail组件（自然是因为听说连Intel公司也在使用它的缘故）。既然使用过了，自然对其会有所了解，我想在这里也不妨对ASPmail组件的使用作下简单的介绍。 应用ASPmail组件的方法其实也很简单，首先我们得先对该组件进行安装，安装完毕后在ASPmail的安装目录下面会附有Sample实例，我们只要对照着这些例子，再稍加改动即可。我在这里提供了一个实例给大家，并单独将使用该组件时所涉及到的所有其它文件一并放在ASPmail目录下面，大家可以从下载区下载后再细作研究，我在这里只稍作一下简单的说明。
首先，我们在manage2.asp中输入< !--#include file="ASPmail/sendmail2.asp" -->并另存成manage3.asp，而具体sendmail2.asp的脚本如下所示： < % Set mailer = Server.CreateObject("ASPMAIL.ASPMailCtrl.1") %> < % name = Request.form("name") email = Request.form("email") subject = "欢迎您下次再来" memo = "欢迎您下次再来留言！" mailserver = "smtp.21cn.com" result = mailer.SendMail(mailserver, name, email, subject, memo) %> 这里值得大家注意的是：mailserver = "smtp.21cn.com" 中填写的是SMTP服务器，我在这里用了21世纪的SMTP的邮件服务器来作例子，当然你也可以用其它地方的或你自己的（真是羡慕煞人了），就是有一点非常重要，你必须填写正确，而且确信它们确实是开通了该服务。至于我最后为什么又放弃了使用该组件，大家用过之后很可能如我者也不会在少数，原因很简单：就因为该免费的组件会在你所发送的每一封信的下面讨厌地放上几句催你赶快去购买它的注册版的文字。