第 11章 设计实例
ASP动态网页设计教程
2
第 11章 设计实例
11.1 电子邮件 E-mail
11.2 电子报 E-Newspaper
11.3 计数器
11.4 聊天室
3
根据调查,在互联网提供的各项服务中,电子邮件已成为网友最常使用的一项服务。或许您可以一天不上网,但是收信、发信、回信或订阅电子报、电子杂志已变成了每天例行的功课。电子邮件已深入每个人的生活,许多高科技的公司,更将电子邮件当成重要的工具,可以用来做工作报告、与总分公司联系、公文传递及产品报价等。电子邮件已成为现代人生活的一部分。
在互联网的服务上,一个完整的电子邮件应用服务,应包括
SMTP及 POP服务。而 Microsoft Windows XP对电子邮件的解决方案,却只提供发信功能的 SMTP服务,对于收信 (POP)服务则必须额外付费购买 Microsoft Exchange Server,才能提供完整的 E-mail
服务。因此本节我们不过多地谈及 POP服务,而将重心放在介绍
SMTP服务上,并示范如何利用 SMTP开发留言板服务。
11.1 电子邮件 E-mail
4
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
11.1.2 Windows NT的 SMTP服务
11.1.3 留言板
11.1.4 完整的留言板范例
5
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式在 Internet的服务当中,电子邮件的相关标准 (规则 )很多,其中最著名的服务有 SMTP和 POP两种协议。它们的意义及功能说明分述如下:
* 什么是 SMTP
SMTP的全名为 Simple Mail Transfer Protocol,中文翻译为
“简单邮件传输协议”。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式,它是一种网络机器间的邮件交换标准,也就是说计算机间使用 SMTP来传输电子邮件。 SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。 SMTP服务器就是遵循 SMTP协议的发送邮件服务器。 SMTP的运作流程如下图所示。
6
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
* 什么是 POP
POP的全名为 Post Office Protocol,中文译为邮局传输协议,若以现实生活的方式来解释,相信您更容易理解。其实 POP服务就像邮局的邮政信箱,为了收取来自四面八方的朋友来信、您必须向邮局申请一个邮政信箱 (向 ISP或免费电子邮件的提供商申请电子邮件账号 )才可以用它来收信,且信件会自动被置于此信箱中 (网络服务器会将您的 E-mail置于 POP Server上 ),等待信箱的所有人前来开箱领取信
7
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式件 。 开箱取信前您必须有邮局发给您的钥匙 (必须输入用户名称及密码 ),惟有确认无误后才能取得自己的信件 。 POP协议的流程如下图所示 。
说明,POP通讯协议经过多年的发展,目前已经发展至第三版,
因此您常听到的 POP3,其实就是 POP通讯协议的第三个版本,是规定了怎样将个人计算机连接到 Internet的邮件服务器和下载电子邮件的电子协议 。 它是 Internet 电子邮件的第一个离线协议标准 。 简单点说,POP3 就是一个简单而实用的邮件信息传输协议 。
8
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
1,电子邮件运作流程电子邮件运作的流程与传统邮局处理信件的过程相似。过去寄一封信,必须先由邮局工作人员将邮筒中的信件汇集至当地管辖邮局,然后依照收件人的地址分发至所属的邮局,最后再经由邮递员将信件送至收件人的手中。现在信件已不再通过邮递员来传递,而改由网络来承担这一责任。过去担任信件的分发、转信服务的邮局,
现在都变成了一部部的电子邮件主机。
传统的信件与电子邮件最大的不同,在于信件的传输方式。电子邮件是数字的服务 ( Digital Service ),它是没有实体的东西,而是数字化的信息;传统邮件则还是实体且为有形的服务。另外电子邮件还有投递速度快、费用便宜及内容多样化的特点,这些都是传统信件所无法比拟的,这也就是为什么电子邮件受到重视的原因。
9
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
2,电子邮件地址的格式现代人几乎每个人都有电子邮件的地址,而每一个电子邮件地址在计算机上都是惟一的信箱。电子邮件完整的格式如下:
用户账号 @邮递信件主机名称所谓的“用户账号”相当于传统信件中的姓名;“邮递信件主机名称”就相当于收件地址,唯有正确的邮件账号才能收发信件。
举例来说,dhs2005@eyou.com.cn,其中 dhs2005为作者的用户帐号; eyou.com.cn则为邮递信件主机名称,至于 @为用户帐号与邮递信件主机名称的分隔字符,它的发音为 at,也就是“在”的意思。
完整的意思就是 dhs2005这个帐号是开设在 eyou.com.cn的邮递信件主机上,也就是说 dhs2005为该主机上的一个用户账号。
10
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务前面提及 Windows XP并未内置邮件服务器 (Mail Server )的功能 (包括完整的 SMTP,POP3或 IMAP等功能 ),若需要 Mail Server
还需另外采购。市面上较著名的 Mail Server包括 Netscape的 Mail
Server,Microsoft的 Exchange Server或 Eudora公司的产品等。
虽然 Windows XP并未提供完整的 Mail Server功能,但是现在伴随 Windows XP发售的 IIS5.1(包括 IIS4.0以上 )软件均已提供免费的 SMTP服务,通过 SMTP服务就可以满足发信的需求。至于收信服务则可以利用免费的电子邮件即可,像 Hotmail,PCHome、
sohu,Yahoo,eyou,sina,eyou,...等。在正式介绍 Windows的
SMTP服务以前,请先确认您的系统是否已满足下列的条件:
* Windows NT 4.0 Service Pack 3以后的版本,本书使用版本为 Microsoft Windows XP Professional Service Pack 2。
* IIS 4.0以上的版本 (本书使用版本为 IIS5.1),并安装 SMTP
Service
11
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务安装方式请参考 NT Option Pack 4.0的文件说明。若为
Windows XP Professional的用户请于安装时选取 SMTP服务即可。
当成功地安装 SMTP 服务以后,SMTP 服务会自动在系统中加入
CDONTS对象,并允许应用程序 (如 ASP,VB等 )通过 CDONTS对象发送电子邮件。
1,CDONTS对象利用 Windows的 SMTP服务发送电子邮件,必须通过内置的
CDONTS对象去完成,因此我们必须先知道 CDONTS对象所提供的功能及使用方法才能顺利地发送电子邮件,这就是所谓的“工欲善其事,必先利其器”。 CDONTS对象提供的属性及方法如下面表格所示。
12
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务
CDONTS属性一览表属 性 说 明 备 注
From 发件人 E-mail地址
To 收件人 E-mail地址
CC 副本收受者
BCC 密送副本收受者
Subject 信件主题
Body 信件内容 (本文 )
Importance 信件重要程度 Low,Normal,High
BodyFormat 文本区的编码格式 0-HTML
MailFormat 信件的编码格式 0-HTML
13
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务
CDONTS方法一览表
2,调用 CDONTS对象的步骤在 ASP中要使用 CDONTS对象,首先必须先创建 CDONTS对象,而创建对象则必须通过 Server对象的 CreateObject方法来完成。
创建 CDONTS对象的范例如下:
Dim MyMail '定义变量 MyMail
'创建 CDONTS对象
Set MyMail = Server.CreateObject("CDONTS.NewMail")
属 性 说 明
AttachFile 信件的附件
Send 发送电子邮件
14
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务在创建 CDONTS对象后,我们还要正确的设置 CDONTS的 相关属性,例如发件人 (若未指定发件人 SMTP不会发送此封邮件 )、收件人、信件主题、信件内容等,然后通过 Send 方法才可以将电子邮件送出。发送电子邮件必须设置的信息如下:
MyMail.From = "gqxuan@tjhldgz.com.cn" '发件人 E-mail
MyMail.To = "dhs2005@eyou.com.cn" '收件人 E-mail
MyMail.Subject = "电子邮件测试 "
MyMail.Body = "电子邮件发送测试,收到请回复。 "
MyMail.Send '发送电子邮件在完成电子邮件发送服务之后,请务必记住将先前 CreateObject
所创建的 CDONTS对象所占的资源释放,以避免造成系统因资源耗尽而发生不稳定或死机等问题。
15
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务释放对象变量的用法如下:
Set MyMail = Nothing
看完上述的说明,Windows的 SMTP发信服务经我们再度整理以后,最精简的用法如下:
Dim MyMail '定义变量 MyMail
Set MyMail = Server.CreateObject("CDONTS.NewMail")
MyMail.From="gqxuan@tjhldgz.com.cn" '发件人 E-mail
MyMail.To="dhs2005@eyou.com.cn" '收件人 E-mail
MyMail.Subject = "电子邮件测试 "
MyMail.Body ="电子邮件发送测试,收到请回复。 "
MyMail.Send '发送电子邮件
Set MyMail = Nothing
16
11.1 电子邮件 E-mail
11.1.3 留言板在本留言板的范例中,我们采用 Browser-Based在线上填写留言,然后以 ASP程序将留言转成 E-mail,然后发给客户服务人员统一回复。详细的操作流程如下:
* 网友在线填写留言板内容。
* ASP程序将留言内容转成 E-mail,发至客户服务人员的信箱。
* 客户服务人员收信后,将解决方案直接以电子邮件回复给网友。
根据上面的操作流程,我们可以将留言板的开发程序分为下列的步骤:
* 制作留言板的网页
* 定义留言板转 E-mail的版面内容
* 开发将线上留言转 E-mail的 ASP程序
* 设计发送 E-mail成功与否的网页
17
11.1 电子邮件 E-mail
11.1.3 留言板
1,留言板网页内容本留言板 (如右图所示 )的内容包括留言类型 (例如一般留言或给网站管理者的留言 )、留言者姓名、性别、
电子邮件、主题、以及留言内容等,
其中电子邮件主要供客服人员回复问题之用,至于性别及留言类型视网站的规划而定。有的网站甚至要求用户留下白天及晚上的联络电话,
以便提供进一步的服务。
18
11.1 电子邮件 E-mail
11.1.3 留言板画面输入项目的字段名称及其对应值如下表所示。
项 次 字段名称 字段的值及其说明
1 Kind 0:一般留言; 1:给网站管理者的留言
2 Name 姓名
3 E-mail 电子邮件
4 Sex 0:女; 1:男
5 Subject 信件主题
6 Body 信件内容
19
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 (mboard.htm)如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言板 </title>
<style type="text/css">
<!--
.style1 {color,#000000}
-->
</style>
</head>
<body topmargin="0" leftmargin="0" link="#004600" vlink="#0066CC"
alink="#CC0066">
<table border="0" cellspacing="0" cellpadding="0" width="480">
<tr>
<td valign="top" width="627">
20
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<div align="center">
<table border="0" width="480" cellpadding="3" height="399">
<tr>
<td width="554">
<p style="line-height,120%; margin-left,20; color,#000000;">
<font size="2">您对本网站有何建议吗?<br>
欢迎提出您的建议,我们将在处理后与您联络,Thanks! </font>
</p>
</td>
</tr>
<tr>
<td width="554">
<form action="feedback.asp" method="post">
<table border="0" width="100%" cellspacing="0"
cellpadding="2" height="257">
21
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<tr bgcolor="#ECF5FF">
<td width="14%" height="18"></td>
<td width="38%" height="18"><font size="2" color="#1840B0">
<input type="radio" value="0" name="kind" checked>
</font><font size=“2”><span class=“style1”> 一般留言
</span></font>
</td>
<td width="48%" colspan="2" height="18">
<font size="2" color="#1840B0">
<input type="radio" value="1" name="kind"></font>
<font size="2"><span class="style1">给网站管理者 </span></font>
</td>
</tr>
<tr>
<td width="14%" align="right" valign="middle" height="19">
22
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<span class="style1"><font size="2">姓名,</font></span>
</td>
<td width="38%" height="19"><input type="text" name="name" size="20">
</td>
<td width="13%" height="19" align="right">
<span class="style1"><font size="2">性别,</font></span></td>
<td width="35%" height="19">
<span class="style1">
<input type="radio" name="sex" value="1">
<font size="2">男
<input type="radio" name="sex" value="0" checked>
女
</font>
</span></td>
</tr>
23
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<tr>
<td width="14%" height="25" align="right" valign="middle" nowrap>
<span class="style1">
<font size="2" face="Arial">e-mail</font></span>
<font size="2">,</font>
</td>
<td width="86%" colspan="3" height="25">
<input type="text" name="from" size="28">
</td>
</tr>
<tr>
<td width="14%" align="right" valign="middle" height="25">
<span class="style1"><font size="2">主题,</font></span>
</td>
<td width="86%" colspan="3" height="25">
24
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<input type="text" name="subject" size="28">
</td>
</tr>
<tr>
<td width="14%" align="right" valign="top" height="119">
<span class="style1"><font size="2">留言,</font></span>
</td>
<td width="86%" valign="top" colspan="3" height="119">
<textarea name="body" rows="6" cols="48"></textarea>
</td>
</tr>
<tr>
<td width="100%" align="center" valign="top" colspan="4"
height="27">
25
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<input type="submit" value="送出 " name="send">
<input type="reset" value="清除 " name="clear">
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</body>
</html>
26
11.1 电子邮件 E-mail
11.1.3 留言板
2,留言板转 E-mail的版面内容根据留言板的定义,我们将留言者的 E-mail设为发件人,而收件人则设为客服人员的服务信箱,主题成为信件的标题,留言则成为信件的 Body部分。为详细记载留言者的信息,我们将电子邮件的 Body部分,定义其格式如下图所示。
27
11.1 电子邮件 E-mail
11.1.3 留言板
3,在线表单转成电子邮件当用户填完留言的信息,按下“送出” (Submit)按钮后,在线表单的信息将被编码为 URL格式的 Request信息,并被送至 IIS
处理,当 ASP应用程序收到 IIS送来的客户端 (Client)信息时,相关信息会经 ASP前置处理后,将此信息置于 Request 对象,通过
Request对象我们就可以轻易的取得在线表单的输入值。取得在线表单字段的方式如下:
变量 = Request("表单字段名称 ")
[范例,] EMAIL = Request("EMAIL")
28
11.1 电子邮件 E-mail
11.1.3 留言板
3,在线表单转成电子邮件将输入值转为 E-MAIL的方式非常简单,我们只要将在线表单输入的变量内容,指定给 CDONTS对象的相关属性后,然后调用 CDONTS对象的 Send方法,即可将数据通过 E-MAIL发至客户服务人员的信箱 。 在线表单转为电子邮件的范例如下:
<%
Set CDOMail = Server.CreateObject("CDONTS.NewMail")
CDOMail.From = Request("From")
CDOMail.To = Request("To")
CDOMail.Subject = Request("Subject")
CDOMail.Body = Request("Body")
CDOMail.Send
Set CDOMail = Nothing
:
%>
29
11.1 电子邮件 E-mail
11.1.3 留言板
4,取得客户端信息留言板的信息在转成 E-mail之后,客户填写的信息将一览无疑地呈现在电子邮件上,惟有一些客户端的信息若未经特殊的处理,则无法忠实地展现在客服人员的面前,这些信息有其潜在的商业价值或者成为追踪用户的利器。
客户端的信息包括客户的 IP地址、客户端的操作系统、浏览器种类及版本等。若我们将这些信息加以统计,则我们不难得知上网的使用人员中,使用 Windows操作系统,Internet Explorer浏览器的比率,而这些信息就藏在客户端的 Request信息中,等待着我们去发掘。
30
11.1 电子邮件 E-mail
11.1.3 留言板
4,取得客户端信息常用的客户端信息如下:
Request(“REMOTE_HOST”)?取得客户端 IP地址
Request(“HTTP_USER_AGENT”)?取得客户端浏览器版本及操作系统名称这些信息我们可以附加在留言内容后面,供服务人员或系统管理者参考。例如客户反应无法正确浏览我们的网页,通过留言板传来的信息中,我们发现客户使用的是 Netscape浏览器,由于不支持我们网页使用的 CSS,所以导致无法正确浏览网页,因此我们就可以告知客户,建议他使用 Internet Explorer浏览器就可以避免上述的问题发生。
31
11.1 电子邮件 E-mail
11.1.3 留言板
5,留言后的输出网页通常一个完整的留言板网页,除在线表单填写的 Form以外,
还必须制作信息响应的网页,告知用户信息已经成功地送出或者因某种原因而失败。在本范例中我们将用户输入的网页内容再显示一次,并告知信息已送出请其静待后续的处理。响应的信息如下图所示。
32
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例看完上面的介绍,我们已经完成全功能的留言板机制,这些功能包括在线表单转 E-mail、取得系统日期及客户端信息等。完整的 ASP程序代码 (feedback.asp)如下:
<%
Dim sKind
Dim sName
Dim sSex
Dim sFrom
Dim sTo
Dim sSubject
Dim sBody
Dim CDOMail,Title,Message
NL = CHR(13) + CHR(10)?换行字符串
(0x0D 0x0A)
sFrom = Request("From")
sName = Request("Name")
sTo = "akila2k@ms56.hinet.net"
sSubject = "[留言板 ]" + Request("Subject")
sBody = Request("Body")
sSex = Request("Sex")
If sSex = "0" Then
Title = "小姐 "
Else
Title = "先生 "
End If
Message = "姓名," + sName + Title + NL
Message = Message + "时间," & Now & NL
Message = Message + "-----------------------------
-------------------" + NL
Message = Message + sBody + NL
Message = Message + "-----------------------------
-------------------" + NL
Message = Message + "IP地址," +
Request("REMOTE_ADDR") + NL
Message = Message + "相关信息," +
Request("HTTP_USER_AGENT")
Set CDOMail =
33
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
feedback.asp(续 )如下:
Server.CreateObject("CDONTS")
CDOMail.From = sFrom
CDOMail.To = sTo
CDOMail.Subject = sSubject
CDOMail.Body = Message
CDOMail.Send
Set CDOMail = Nothing
%>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<title>留言板 </title>
<style type="text/css">
.text { color,black; font-weight,normal;
font-family,宋体 ; font-size,11pt }
.bodytext { color,black; font-weight,
normal;font-family,宋体 ; font-size,9pt }
.title {color,blue; font-weight,normal;
font-family,宋体 ; font-size,11pt }
</style>
</head>
<body class="text">
<br>
<blockquote>
<p class="title">
欢迎使用留言板提供任何建议,我们收到信息后会尽快与您联络,谢谢您!
</p>
发件人,<% = sName %><% = Title %>
"<% = sFrom %>"<br>
收件人,<% = sTo %><br><br>
时间,<% = Now %><br>
-----------------------------------------------
<PRE><% = Request("Body") %></PRE>
---------------------------------------------------
<br>
IP地址,<% = Request("REMOTE_ADDR") %><br>
相关信息,<% = Request("HTTP_USER_AGENT") %>
</blockquote>
</body>
</html>
34
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
* 客户端信息进一步的应用上面的信息或许您不见得会用到,但有时在某方面的应用,是派得上用场的。例如:某企业提供两种不同渠道的服务给客户使用,一种是通过 Internet,另一种则通过 Terminal Server的拨号上网服务。由于拨号上网服务是采用专线连接的方式,安全等级较 Internet
要高,因此可提供进一步的服务,而 Internet的服务则受限于安全的问题,提供较少的服务。
35
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
* 客户端信息进一步的应用实际上,像上述的这种应用,我们可以通过取得客户端的 IP地址加以判别客户是来自 Internet,还是来自 Terminal Server拨号上网用户。因为通过 Terminal Server 拨号上网的客户端,IP地址一般是由 Server 端指定,因此通过取得 IP地址的范围,我们就可以轻易得知客户是拨号用户还是来自于 Internet,然后通过内嵌在网页上的隐藏字段,供后续的程序使用,就可以达到差异化服务的目的。取得客户端 IP地址的 ASP命令如下:
IP=Request("REMOTE_ADDR")
说明:看完 Windows XP提供的 SMTP服务,相信您已经可以完全操控 SMTP服务。至于高级的服务范例,在本章电子报实例中会有进一步的说明。
ASP动态网页设计教程
2
第 11章 设计实例
11.1 电子邮件 E-mail
11.2 电子报 E-Newspaper
11.3 计数器
11.4 聊天室
3
根据调查,在互联网提供的各项服务中,电子邮件已成为网友最常使用的一项服务。或许您可以一天不上网,但是收信、发信、回信或订阅电子报、电子杂志已变成了每天例行的功课。电子邮件已深入每个人的生活,许多高科技的公司,更将电子邮件当成重要的工具,可以用来做工作报告、与总分公司联系、公文传递及产品报价等。电子邮件已成为现代人生活的一部分。
在互联网的服务上,一个完整的电子邮件应用服务,应包括
SMTP及 POP服务。而 Microsoft Windows XP对电子邮件的解决方案,却只提供发信功能的 SMTP服务,对于收信 (POP)服务则必须额外付费购买 Microsoft Exchange Server,才能提供完整的 E-mail
服务。因此本节我们不过多地谈及 POP服务,而将重心放在介绍
SMTP服务上,并示范如何利用 SMTP开发留言板服务。
11.1 电子邮件 E-mail
4
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
11.1.2 Windows NT的 SMTP服务
11.1.3 留言板
11.1.4 完整的留言板范例
5
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式在 Internet的服务当中,电子邮件的相关标准 (规则 )很多,其中最著名的服务有 SMTP和 POP两种协议。它们的意义及功能说明分述如下:
* 什么是 SMTP
SMTP的全名为 Simple Mail Transfer Protocol,中文翻译为
“简单邮件传输协议”。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式,它是一种网络机器间的邮件交换标准,也就是说计算机间使用 SMTP来传输电子邮件。 SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。 SMTP服务器就是遵循 SMTP协议的发送邮件服务器。 SMTP的运作流程如下图所示。
6
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
* 什么是 POP
POP的全名为 Post Office Protocol,中文译为邮局传输协议,若以现实生活的方式来解释,相信您更容易理解。其实 POP服务就像邮局的邮政信箱,为了收取来自四面八方的朋友来信、您必须向邮局申请一个邮政信箱 (向 ISP或免费电子邮件的提供商申请电子邮件账号 )才可以用它来收信,且信件会自动被置于此信箱中 (网络服务器会将您的 E-mail置于 POP Server上 ),等待信箱的所有人前来开箱领取信
7
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式件 。 开箱取信前您必须有邮局发给您的钥匙 (必须输入用户名称及密码 ),惟有确认无误后才能取得自己的信件 。 POP协议的流程如下图所示 。
说明,POP通讯协议经过多年的发展,目前已经发展至第三版,
因此您常听到的 POP3,其实就是 POP通讯协议的第三个版本,是规定了怎样将个人计算机连接到 Internet的邮件服务器和下载电子邮件的电子协议 。 它是 Internet 电子邮件的第一个离线协议标准 。 简单点说,POP3 就是一个简单而实用的邮件信息传输协议 。
8
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
1,电子邮件运作流程电子邮件运作的流程与传统邮局处理信件的过程相似。过去寄一封信,必须先由邮局工作人员将邮筒中的信件汇集至当地管辖邮局,然后依照收件人的地址分发至所属的邮局,最后再经由邮递员将信件送至收件人的手中。现在信件已不再通过邮递员来传递,而改由网络来承担这一责任。过去担任信件的分发、转信服务的邮局,
现在都变成了一部部的电子邮件主机。
传统的信件与电子邮件最大的不同,在于信件的传输方式。电子邮件是数字的服务 ( Digital Service ),它是没有实体的东西,而是数字化的信息;传统邮件则还是实体且为有形的服务。另外电子邮件还有投递速度快、费用便宜及内容多样化的特点,这些都是传统信件所无法比拟的,这也就是为什么电子邮件受到重视的原因。
9
11.1 电子邮件 E-mail
11.1.1 电子邮件的标准与格式
2,电子邮件地址的格式现代人几乎每个人都有电子邮件的地址,而每一个电子邮件地址在计算机上都是惟一的信箱。电子邮件完整的格式如下:
用户账号 @邮递信件主机名称所谓的“用户账号”相当于传统信件中的姓名;“邮递信件主机名称”就相当于收件地址,唯有正确的邮件账号才能收发信件。
举例来说,dhs2005@eyou.com.cn,其中 dhs2005为作者的用户帐号; eyou.com.cn则为邮递信件主机名称,至于 @为用户帐号与邮递信件主机名称的分隔字符,它的发音为 at,也就是“在”的意思。
完整的意思就是 dhs2005这个帐号是开设在 eyou.com.cn的邮递信件主机上,也就是说 dhs2005为该主机上的一个用户账号。
10
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务前面提及 Windows XP并未内置邮件服务器 (Mail Server )的功能 (包括完整的 SMTP,POP3或 IMAP等功能 ),若需要 Mail Server
还需另外采购。市面上较著名的 Mail Server包括 Netscape的 Mail
Server,Microsoft的 Exchange Server或 Eudora公司的产品等。
虽然 Windows XP并未提供完整的 Mail Server功能,但是现在伴随 Windows XP发售的 IIS5.1(包括 IIS4.0以上 )软件均已提供免费的 SMTP服务,通过 SMTP服务就可以满足发信的需求。至于收信服务则可以利用免费的电子邮件即可,像 Hotmail,PCHome、
sohu,Yahoo,eyou,sina,eyou,...等。在正式介绍 Windows的
SMTP服务以前,请先确认您的系统是否已满足下列的条件:
* Windows NT 4.0 Service Pack 3以后的版本,本书使用版本为 Microsoft Windows XP Professional Service Pack 2。
* IIS 4.0以上的版本 (本书使用版本为 IIS5.1),并安装 SMTP
Service
11
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务安装方式请参考 NT Option Pack 4.0的文件说明。若为
Windows XP Professional的用户请于安装时选取 SMTP服务即可。
当成功地安装 SMTP 服务以后,SMTP 服务会自动在系统中加入
CDONTS对象,并允许应用程序 (如 ASP,VB等 )通过 CDONTS对象发送电子邮件。
1,CDONTS对象利用 Windows的 SMTP服务发送电子邮件,必须通过内置的
CDONTS对象去完成,因此我们必须先知道 CDONTS对象所提供的功能及使用方法才能顺利地发送电子邮件,这就是所谓的“工欲善其事,必先利其器”。 CDONTS对象提供的属性及方法如下面表格所示。
12
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务
CDONTS属性一览表属 性 说 明 备 注
From 发件人 E-mail地址
To 收件人 E-mail地址
CC 副本收受者
BCC 密送副本收受者
Subject 信件主题
Body 信件内容 (本文 )
Importance 信件重要程度 Low,Normal,High
BodyFormat 文本区的编码格式 0-HTML
MailFormat 信件的编码格式 0-HTML
13
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务
CDONTS方法一览表
2,调用 CDONTS对象的步骤在 ASP中要使用 CDONTS对象,首先必须先创建 CDONTS对象,而创建对象则必须通过 Server对象的 CreateObject方法来完成。
创建 CDONTS对象的范例如下:
Dim MyMail '定义变量 MyMail
'创建 CDONTS对象
Set MyMail = Server.CreateObject("CDONTS.NewMail")
属 性 说 明
AttachFile 信件的附件
Send 发送电子邮件
14
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务在创建 CDONTS对象后,我们还要正确的设置 CDONTS的 相关属性,例如发件人 (若未指定发件人 SMTP不会发送此封邮件 )、收件人、信件主题、信件内容等,然后通过 Send 方法才可以将电子邮件送出。发送电子邮件必须设置的信息如下:
MyMail.From = "gqxuan@tjhldgz.com.cn" '发件人 E-mail
MyMail.To = "dhs2005@eyou.com.cn" '收件人 E-mail
MyMail.Subject = "电子邮件测试 "
MyMail.Body = "电子邮件发送测试,收到请回复。 "
MyMail.Send '发送电子邮件在完成电子邮件发送服务之后,请务必记住将先前 CreateObject
所创建的 CDONTS对象所占的资源释放,以避免造成系统因资源耗尽而发生不稳定或死机等问题。
15
11.1 电子邮件 E-mail
11.1.2 Windows NT的 SMTP服务释放对象变量的用法如下:
Set MyMail = Nothing
看完上述的说明,Windows的 SMTP发信服务经我们再度整理以后,最精简的用法如下:
Dim MyMail '定义变量 MyMail
Set MyMail = Server.CreateObject("CDONTS.NewMail")
MyMail.From="gqxuan@tjhldgz.com.cn" '发件人 E-mail
MyMail.To="dhs2005@eyou.com.cn" '收件人 E-mail
MyMail.Subject = "电子邮件测试 "
MyMail.Body ="电子邮件发送测试,收到请回复。 "
MyMail.Send '发送电子邮件
Set MyMail = Nothing
16
11.1 电子邮件 E-mail
11.1.3 留言板在本留言板的范例中,我们采用 Browser-Based在线上填写留言,然后以 ASP程序将留言转成 E-mail,然后发给客户服务人员统一回复。详细的操作流程如下:
* 网友在线填写留言板内容。
* ASP程序将留言内容转成 E-mail,发至客户服务人员的信箱。
* 客户服务人员收信后,将解决方案直接以电子邮件回复给网友。
根据上面的操作流程,我们可以将留言板的开发程序分为下列的步骤:
* 制作留言板的网页
* 定义留言板转 E-mail的版面内容
* 开发将线上留言转 E-mail的 ASP程序
* 设计发送 E-mail成功与否的网页
17
11.1 电子邮件 E-mail
11.1.3 留言板
1,留言板网页内容本留言板 (如右图所示 )的内容包括留言类型 (例如一般留言或给网站管理者的留言 )、留言者姓名、性别、
电子邮件、主题、以及留言内容等,
其中电子邮件主要供客服人员回复问题之用,至于性别及留言类型视网站的规划而定。有的网站甚至要求用户留下白天及晚上的联络电话,
以便提供进一步的服务。
18
11.1 电子邮件 E-mail
11.1.3 留言板画面输入项目的字段名称及其对应值如下表所示。
项 次 字段名称 字段的值及其说明
1 Kind 0:一般留言; 1:给网站管理者的留言
2 Name 姓名
3 E-mail 电子邮件
4 Sex 0:女; 1:男
5 Subject 信件主题
6 Body 信件内容
19
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 (mboard.htm)如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言板 </title>
<style type="text/css">
<!--
.style1 {color,#000000}
-->
</style>
</head>
<body topmargin="0" leftmargin="0" link="#004600" vlink="#0066CC"
alink="#CC0066">
<table border="0" cellspacing="0" cellpadding="0" width="480">
<tr>
<td valign="top" width="627">
20
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<div align="center">
<table border="0" width="480" cellpadding="3" height="399">
<tr>
<td width="554">
<p style="line-height,120%; margin-left,20; color,#000000;">
<font size="2">您对本网站有何建议吗?<br>
欢迎提出您的建议,我们将在处理后与您联络,Thanks! </font>
</p>
</td>
</tr>
<tr>
<td width="554">
<form action="feedback.asp" method="post">
<table border="0" width="100%" cellspacing="0"
cellpadding="2" height="257">
21
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<tr bgcolor="#ECF5FF">
<td width="14%" height="18"></td>
<td width="38%" height="18"><font size="2" color="#1840B0">
<input type="radio" value="0" name="kind" checked>
</font><font size=“2”><span class=“style1”> 一般留言
</span></font>
</td>
<td width="48%" colspan="2" height="18">
<font size="2" color="#1840B0">
<input type="radio" value="1" name="kind"></font>
<font size="2"><span class="style1">给网站管理者 </span></font>
</td>
</tr>
<tr>
<td width="14%" align="right" valign="middle" height="19">
22
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<span class="style1"><font size="2">姓名,</font></span>
</td>
<td width="38%" height="19"><input type="text" name="name" size="20">
</td>
<td width="13%" height="19" align="right">
<span class="style1"><font size="2">性别,</font></span></td>
<td width="35%" height="19">
<span class="style1">
<input type="radio" name="sex" value="1">
<font size="2">男
<input type="radio" name="sex" value="0" checked>
女
</font>
</span></td>
</tr>
23
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<tr>
<td width="14%" height="25" align="right" valign="middle" nowrap>
<span class="style1">
<font size="2" face="Arial">e-mail</font></span>
<font size="2">,</font>
</td>
<td width="86%" colspan="3" height="25">
<input type="text" name="from" size="28">
</td>
</tr>
<tr>
<td width="14%" align="right" valign="middle" height="25">
<span class="style1"><font size="2">主题,</font></span>
</td>
<td width="86%" colspan="3" height="25">
24
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<input type="text" name="subject" size="28">
</td>
</tr>
<tr>
<td width="14%" align="right" valign="top" height="119">
<span class="style1"><font size="2">留言,</font></span>
</td>
<td width="86%" valign="top" colspan="3" height="119">
<textarea name="body" rows="6" cols="48"></textarea>
</td>
</tr>
<tr>
<td width="100%" align="center" valign="top" colspan="4"
height="27">
25
11.1 电子邮件 E-mail
11.1.3 留言板留言板网页的 HTML代码 mboard.htm(续 )如下:
<input type="submit" value="送出 " name="send">
<input type="reset" value="清除 " name="clear">
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</body>
</html>
26
11.1 电子邮件 E-mail
11.1.3 留言板
2,留言板转 E-mail的版面内容根据留言板的定义,我们将留言者的 E-mail设为发件人,而收件人则设为客服人员的服务信箱,主题成为信件的标题,留言则成为信件的 Body部分。为详细记载留言者的信息,我们将电子邮件的 Body部分,定义其格式如下图所示。
27
11.1 电子邮件 E-mail
11.1.3 留言板
3,在线表单转成电子邮件当用户填完留言的信息,按下“送出” (Submit)按钮后,在线表单的信息将被编码为 URL格式的 Request信息,并被送至 IIS
处理,当 ASP应用程序收到 IIS送来的客户端 (Client)信息时,相关信息会经 ASP前置处理后,将此信息置于 Request 对象,通过
Request对象我们就可以轻易的取得在线表单的输入值。取得在线表单字段的方式如下:
变量 = Request("表单字段名称 ")
[范例,] EMAIL = Request("EMAIL")
28
11.1 电子邮件 E-mail
11.1.3 留言板
3,在线表单转成电子邮件将输入值转为 E-MAIL的方式非常简单,我们只要将在线表单输入的变量内容,指定给 CDONTS对象的相关属性后,然后调用 CDONTS对象的 Send方法,即可将数据通过 E-MAIL发至客户服务人员的信箱 。 在线表单转为电子邮件的范例如下:
<%
Set CDOMail = Server.CreateObject("CDONTS.NewMail")
CDOMail.From = Request("From")
CDOMail.To = Request("To")
CDOMail.Subject = Request("Subject")
CDOMail.Body = Request("Body")
CDOMail.Send
Set CDOMail = Nothing
:
%>
29
11.1 电子邮件 E-mail
11.1.3 留言板
4,取得客户端信息留言板的信息在转成 E-mail之后,客户填写的信息将一览无疑地呈现在电子邮件上,惟有一些客户端的信息若未经特殊的处理,则无法忠实地展现在客服人员的面前,这些信息有其潜在的商业价值或者成为追踪用户的利器。
客户端的信息包括客户的 IP地址、客户端的操作系统、浏览器种类及版本等。若我们将这些信息加以统计,则我们不难得知上网的使用人员中,使用 Windows操作系统,Internet Explorer浏览器的比率,而这些信息就藏在客户端的 Request信息中,等待着我们去发掘。
30
11.1 电子邮件 E-mail
11.1.3 留言板
4,取得客户端信息常用的客户端信息如下:
Request(“REMOTE_HOST”)?取得客户端 IP地址
Request(“HTTP_USER_AGENT”)?取得客户端浏览器版本及操作系统名称这些信息我们可以附加在留言内容后面,供服务人员或系统管理者参考。例如客户反应无法正确浏览我们的网页,通过留言板传来的信息中,我们发现客户使用的是 Netscape浏览器,由于不支持我们网页使用的 CSS,所以导致无法正确浏览网页,因此我们就可以告知客户,建议他使用 Internet Explorer浏览器就可以避免上述的问题发生。
31
11.1 电子邮件 E-mail
11.1.3 留言板
5,留言后的输出网页通常一个完整的留言板网页,除在线表单填写的 Form以外,
还必须制作信息响应的网页,告知用户信息已经成功地送出或者因某种原因而失败。在本范例中我们将用户输入的网页内容再显示一次,并告知信息已送出请其静待后续的处理。响应的信息如下图所示。
32
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例看完上面的介绍,我们已经完成全功能的留言板机制,这些功能包括在线表单转 E-mail、取得系统日期及客户端信息等。完整的 ASP程序代码 (feedback.asp)如下:
<%
Dim sKind
Dim sName
Dim sSex
Dim sFrom
Dim sTo
Dim sSubject
Dim sBody
Dim CDOMail,Title,Message
NL = CHR(13) + CHR(10)?换行字符串
(0x0D 0x0A)
sFrom = Request("From")
sName = Request("Name")
sTo = "akila2k@ms56.hinet.net"
sSubject = "[留言板 ]" + Request("Subject")
sBody = Request("Body")
sSex = Request("Sex")
If sSex = "0" Then
Title = "小姐 "
Else
Title = "先生 "
End If
Message = "姓名," + sName + Title + NL
Message = Message + "时间," & Now & NL
Message = Message + "-----------------------------
-------------------" + NL
Message = Message + sBody + NL
Message = Message + "-----------------------------
-------------------" + NL
Message = Message + "IP地址," +
Request("REMOTE_ADDR") + NL
Message = Message + "相关信息," +
Request("HTTP_USER_AGENT")
Set CDOMail =
33
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
feedback.asp(续 )如下:
Server.CreateObject("CDONTS")
CDOMail.From = sFrom
CDOMail.To = sTo
CDOMail.Subject = sSubject
CDOMail.Body = Message
CDOMail.Send
Set CDOMail = Nothing
%>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<title>留言板 </title>
<style type="text/css">
.text { color,black; font-weight,normal;
font-family,宋体 ; font-size,11pt }
.bodytext { color,black; font-weight,
normal;font-family,宋体 ; font-size,9pt }
.title {color,blue; font-weight,normal;
font-family,宋体 ; font-size,11pt }
</style>
</head>
<body class="text">
<br>
<blockquote>
<p class="title">
欢迎使用留言板提供任何建议,我们收到信息后会尽快与您联络,谢谢您!
</p>
发件人,<% = sName %><% = Title %>
"<% = sFrom %>"<br>
收件人,<% = sTo %><br><br>
时间,<% = Now %><br>
-----------------------------------------------
<PRE><% = Request("Body") %></PRE>
---------------------------------------------------
<br>
IP地址,<% = Request("REMOTE_ADDR") %><br>
相关信息,<% = Request("HTTP_USER_AGENT") %>
</blockquote>
</body>
</html>
34
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
* 客户端信息进一步的应用上面的信息或许您不见得会用到,但有时在某方面的应用,是派得上用场的。例如:某企业提供两种不同渠道的服务给客户使用,一种是通过 Internet,另一种则通过 Terminal Server的拨号上网服务。由于拨号上网服务是采用专线连接的方式,安全等级较 Internet
要高,因此可提供进一步的服务,而 Internet的服务则受限于安全的问题,提供较少的服务。
35
11.1 电子邮件 E-mail
11.1.4 完整的留言板范例
* 客户端信息进一步的应用实际上,像上述的这种应用,我们可以通过取得客户端的 IP地址加以判别客户是来自 Internet,还是来自 Terminal Server拨号上网用户。因为通过 Terminal Server 拨号上网的客户端,IP地址一般是由 Server 端指定,因此通过取得 IP地址的范围,我们就可以轻易得知客户是拨号用户还是来自于 Internet,然后通过内嵌在网页上的隐藏字段,供后续的程序使用,就可以达到差异化服务的目的。取得客户端 IP地址的 ASP命令如下:
IP=Request("REMOTE_ADDR")
说明:看完 Windows XP提供的 SMTP服务,相信您已经可以完全操控 SMTP服务。至于高级的服务范例,在本章电子报实例中会有进一步的说明。