设置IIS中的SMTP Server,用asp实现发邮件功能
一、 问题的提出
在用FrontPage 98开发企业网站时,需要用表单收集访问者的分类意见(网站、产品、服务等),并将这些意见通过email发送到不同的人进行处理。或者要用asp实现邮件列表功能,向客户发送新产品信息。我们可以用IIS中的SMTP Server解决这个问题。许多人对设置IIS中的SMTP Server感到困惑,本人也是其中之一。因此,我在网上寻找答案,看到许多网友提出有关问题,但没有看到答案。我于是在微软的网站上查找有关资料,经过尝试,终于解决了这个问题。现在公布出来与大家分享。
二、 软件及网络环境
软件:windows nt server 4,iis4,op4
网络:一台机器专线上网,在这台机器上安装了wingate2.1作为代理服务器。局域网上的用户通过代理服务器上网。正确设置wingate使局域网上的用户能够收发email。实验用的Web Server在局域网内。
假定代理服务器的内部IP地址是:192.168.0.1,Web Server的IP地址是:192.168.0.2。
三、 设置方法
1. 安装SMTP Server
SMTP Server是NT4的OP4的一个组件,如果在MMC(Microsoft Management Console)中没有看到缺省的SMTP站点(Default SMTP Site),请选择OP4的定制安装(custom setup)。
2. 在MMC中用鼠标右击Default SMTP Site,在弹出的菜单中选择Properties,然后左击Delivery页框。
3. 在Fully qualified domain name栏内输入本机(也就是SMTP所在的机器)的IP地址,并将IP地址用方括号括起来。
4. 在Smart host栏内输入代理服务器(wingate所在的机器)的IP地址,并将IP地址用方括号括起来。
5. 左击Outbound Security按钮选择No authentication。
SMTP SERVER详细设置方法可参考:
http://www.microsoft.com/TechNet/iis/mail.asp
四、 测试
1. 假定使用的EMAIL地址是myname@163.net,在outlook express中设置EMAIL账号的SMTP服务器IP地址为SMTP SERVER的IP地址,POP3的IP地址为代理服务器(wingate所在的机器)的IP地址,帐号为myname#pop.163.net。自己给自己发一封EMAIL看看,如果能收到就表明SMTP SERVER 设置OK了!否则请看看SMTP SERVER上文件夹Inetpub/mailroot/queue。如果异常,这个文件夹内有两个文件,一个是邮件本身*.eml在此等候发送(视你在Delivery页框内的设定而发送多少次,两次之间的间隔是多少秒)。另一个是*.rtr文件,用notepad打开可看到异常原因。
Inetpub/mailroot/下的文件夹的作用如下:
Badmail:这个文件夹存储不能发送的邮件。
Drop:这是一个接收邮件的文件夹,发往本地的邮件都保存在这个文件夹里。
Pickup:这是发送邮件的文件夹,当你把邮件放进这个文件夹时,SMTP立即将其发往Drop文件夹或其他的SMTP SERVER。
Queue:这是存储等候发送的邮件的文件夹,待发送邮件在此排队等候发送。
Route,SortTemp和Mailbox:IIS利用这些文件夹对待发送邮件进行排序和整理以提高发送效率。当有多个邮件要发送到同一远程主机时,IIS试图建立一个连接来发送它们,而不是一个邮件建立一次连接。
2. 在FrontPage98中通过EMAIL收集表单内容时,需要在WEB SERVER中的frontpg.ini的[FrontPage 3.0]一节增加SMTPHost参数设置
SMTPHost=192.168.0.2 (本机即WEB SERVER的IP地址)
在FrontPage98中用Customer Support Web 向导在WEB SERVER上建立一个新的站点。用FrontPage Editor编辑Suggest.htm。设置按钮submit suggestion的Form 属性为发送到EMAIL,填写收集表单内容的EMAIL地址。这样就可以用Suggest.htm测试SMTP SERVER是否正常工作了。
3. 用ASP和CDONTS(Collaboration Data Objects for NT Server)发送邮件的代码如下:
<%
Set mail = Server.CreateObject("CDONTS.NewMail")
mail.TO = "yourname@163.net"
mail.From = "myname@163.net"
mail.Subject = "这里是邮件主题"
mail.Body = "这里是邮件内容"
mail.Send
%>
你可以保存这段代码到文件testmail.asp,用它来测试SMTP SERVER是否正常工作了。
就是这么简单,用asp实现邮件列表功能也不难。还不赶快试一试!