1
11.2 电子报 E-Newspaper
在互联网蓬勃发展的今天,似乎每件事情都跟电子 (e)相关,现在通过互联网进行的信息服务都冠上了
e字母,似乎没有了它产品就会相形失色,且无法吸引顾客的目光。身为一个信息人,通常您的信息来源为何? 是每日各大报的头条新闻呢? 还是来自于您订阅的各种专业杂志呢? 还是一个走在信息前端,已经订阅网络电子报 (或电子杂志 )的信息专业人员? 在本例中,
我们将为您介绍如何利用 ASP 开发电子报服务,为网站打开电子发行的新渠道。
2
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识
11.2.2 订阅电子报数据库规划
11.2.3 电子报的管理
11.2.4 发送电子报
11.2.5 HTML格式的电子邮件
3
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识电子报 (Electronic Newspaper) 是一种利用互联网发行的电子刊物。它的原理很简单,只要把你想传达给订阅者的信息,制成订阅者可以阅读的格式,然后通过电子报发行中心的软件系统以电子邮件的方式发送,订阅者就能收到电子报。
1,电子报的格式如果您是经常使用互联网的用户,或许您已经知道电子报的输出格式,基本上可分为两种形式,第一种是最简单的纯文本格式电子报,第二种是利用 HTML所制作的图文并茂的电子报格式。
4
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识制作纯文本电子报主要是以兼容性为最大的考虑 (适用各种平台 Windows,Unix等 ),其次则是它的制作最为简单,只要一般的纯文本编辑器 (像记事本,UltraEdit或 DOS下的 PE2)就可以做到 。 目前仅有少数的电子报采用纯文本格式,例如 ePaper电子报的订阅通知等 。 如下图所示 。
5
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识
HTML格式的电子报,可以利用 HTML语法制作出像网页般图文并茂的电子报,但相应的电子报发行中心就必须拥有专业的美工和网页编辑人员,方能制作出 HTML格式的电子报,当然如果读者经学习后也会制作出漂亮的 HTML格式的电子报 。 由于
Microsoft Windows操作系统的市场占有率最高,因此 Microsoft
的电子邮件软件 Outlook/Outlook
Express广为用户所使用 。 目前国内的电子报几乎均以 HTML的格式发送,例如 Outlook Express
安装后的第一封信,就是 HTML
格式,如右图所示 。
6
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识
2,HTML电子报制作需知利用纯文本制作电子报由于没有兼容上的问题,因此我们在此就不做任何介绍。但是采用 HTML格式的电子报可就没那么容易了,您必需相当了解 HTML文件的特性,否则制作初期,您会有相当的挫折感。
想在 HTML电子报中加入图文的多媒体效果时要注意哪些事项呢? 基本上要注意的是路径链接的问题,因为在 HTML语法中,
路径分为绝对路径及相对路径两种。
* 绝对路径写法:
<a href="http://www.tqbooks.net/">中国铁道出版社 </a>
* 相对路径写法:
<a href="default.asp">天勤网站 </a>
7
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识
2,HTML电子报制作需知
HTML电子报在单机测试时,文件链接的图片和网页均在同一部计算机上,因此通常可以正确显示无误 。 但是这样的测试是会有盲点的,因为当电子报发送出去以后,常因订阅者的个人计算机上没有电子报发行中心的相关图片或对应的链接网页,以致收到的电子报会有损坏图片或链接错误等情形,解决的方法是使用绝对路径就行了 。 这样一来,当电子邮件软件在打开 HTML电子报时,就会连接至电子报发行中心的计算机 (网站 )获取对应的图片及文件 。 一份漂亮的电子报就轻轻松松地送到订阅者的手上了 。
但是并非所有的客户端电子邮件软件,均支持 HTML格式的电子报,因此订阅者可能会发生无法阅读的情形 。 通常这些无法正确阅读 HTML格式电子报的用户,以采用 Unix操作系统的 用
8
11.2 电子报 E-Newspaper
11.2.1 电子报基本知识
2,HTML电子报制作需知户居多 。 但是在,十倍速的网络时代,下,这些问题将可在不久之后得到充分的解决,因为支持 HTML格式的邮件软件会越来越多,若不支持的话就会被用户淘汰 。
3,电子报版面制作纯文本格式的电子报版面可用一般的文字编辑器编写,在此就不做特别的介绍。至于 HTML的电子报版面制作,我们强烈建议您使用微软的 FrontPage或 Macromedia公司出品的
Dreamweaver等工具来编排报纸。若您是 HTML中的高手,也可以用文本编辑器配合浏览器来编排报纸的版面。
不管您是如何制作出一份 HTML电子报,最重要的是超级链接的部分,记住要采用绝对路径。并且在首次发行电子报的时候,一定要先经过严格的测试,待确定内容正确无误后,方可启动发送电子报的服务。
9
11.2 电子报 E-Newspaper
11.2.2 订阅电子报数据库规划由于电子报 (或电子杂志 )是以电子邮件的方式递送,若电子报发行中心漫无目的地发送电子报,很可能会衍生垃圾邮件的问题而遭网友抗议。因此最好的方式就是让订阅者在网络上自由订阅电子报及选择电子报的种类 (若同时有多份的电子报 )。
为了记载订阅者的基本资料,通常我们会将订阅者的资料储存在数据库,至于订阅者填写的信息,则是越简单越好 (Simple is Good! )。否则订阅者常会在
E-mail以外的字段,用避重就轻或乱填的方式登录,
造成资料缺乏参考性的问题。
10
11.2 电子报 E-Newspaper
11.2.2 订阅电子报数据库规划例如,人民网电子杂志 http://mlist.people.com.cn订阅电子杂志就只提供 E-mail字段让订阅者填写,如下图所示 。
11
11.2 电子报 E-Newspaper
11.2.2 订阅电子报数据库规划当订阅者选择好要订阅的杂志后,在订阅文本框内填写您的 E-mail,然后按,订阅,按钮,随后该网站会很快回复,操作报告,,告之订阅者已向您的邮箱发出确认信件,如下图所示 。
12
11.2 电子报 E-Newspaper
11.2.2 订阅电子报数据库规划为了让读者有实际范例可供参考,我们以中国渤海体育网 (本例只是为了说明问题由笔者模拟自制,实际不存在,首页为 zgbhtyw.htm)的足球电子报为例,如下图所示 。
13
11.2 电子报 E-Newspaper
11.2.2 订阅电子报数据库规划本范例将订阅者的数据库规划为两个字段,一个存放订阅者的电子邮件 (E-mail),字段的类型为变动长度的数据类型,字段最长为 50个字符;另一个字段则存放订阅或取消的状态信息 (Status),
字段的类型为固定长度的字符类型,字段长度为 1个字符,其可能的值为,0”(取消订阅 )或,1”(订阅 )。 其中为防止重复订阅,我们将 Email字段设为主键 (Primary Key)且为惟一 (Unique),如下图所示 。
14
11.2 电子报 E-Newspaper
11.2.3 电子报的管理当数据库架构确定以后,接下来我们必须编写订阅电子报的网页和程序。基本上整个订阅服务至少需要订阅、取消订阅以及发送电子报等三部分:
说明:为了简化订阅与取消订阅的程序及 Home
Page设计时须有订阅及取消两个 Button的困扰,本系统采用智能型的订阅 /取消订阅自动判断系统。当系统发现用户未订阅时,系统会自动帮您订阅,若已订阅则系统自动帮您取消订阅。
15
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
1,订阅为了简化订报的程序,通常只要在线上输入订阅者的电子邮件地址按订阅按钮即可完成订阅的页面如下图所示,并且在几秒钟之后即可收到电子报发行中心送来的电子报,版面可真是美丽又有效率。
16
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
1,订阅根据上述的流程,我们将电子报订阅的流程规划如下图所示。
17
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
1,订阅当网友为第一次订阅,订阅后系统回复的信息如下图所示。
18
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
2,取消订阅当订阅者要终止电子报订阅服务时,只要进入电子报发行中心的网站,输入当初订阅时的电子邮件地址并单击 按钮后,
电子报发行中心即依据用户当初订报时所留的电子邮件地址,确认用户的身分无误后,将订阅状态字段的值由,1”改为,0”,即可完成取消订阅的程序。取消订阅的信息如下图所示。
19
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
3,完整的订阅 /取消范例根据上面的需求定义,我们首先制作一个订阅 /取消电子报的输入电子邮件 (E-mail)字段的 HTML页面,其代码 Subscribe.htm如下:
<!DOCTYPE HTML PUBLIC "-
//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<title>订阅电子报 </title>
</head>
<body>
<form name="form1" method="post"
action="Subscribe.asp">
<table width="300" cellspacing="2“
cellpadding="5">
<tr>
<td nowrap><div align=“center”>
请输入您的 Email</div></td>
<td><input name="Email“
type="text"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input name="26" type="submit“
value="订阅 /取消 "></td>
</tr>
</table>
<div></div>
</form>
</body>
</html>
20
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
3,完整的订阅 /取消范例选择好要订阅 (或取消订阅 )的电子报并在电子邮件 (E-mail)字段内输入您的电子邮件地址,按 提交给 ASP程序
Subscribe.asp。订阅 /取消订阅页面如下图所示。
21
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
3,完整的订阅 /取消范例我们将订阅 /取消的功能写在同一个 ASP程序 (Subscribe.asp)中,
其源代码如下:
<%
Dim Title,Status
Title = "【 足球电子报 】 "
' =========================
' * 订阅 /取消足球电子报 *
' =========================
dim Conn,rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open"Driver={SQL
Server};Database=WebHL;Server=(Local);uid=sa;pwd="
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM tjhldgz WHERE Email='" & Request("Email") & "'“
rs.open SQL,Conn,2,3
22
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
3,完整的订阅 /取消范例
Subscribe.asp(续 ),
' 非订户,自动订阅
if rs.Eof Then
rs.AddNew
rs("Email") = Request("Email")
rs("Status") = "1"
rs.Update
Status = 0
Else
If rs("Status") = "0" Then '取消订阅,改为订阅
rs("Status") = "1"
Status = 1
Else
rs("Status") = "0" '订阅,改为取消订阅
Status = 0
End If
23
11.2 电子报 E-Newspaper
11.2.3 电子报的管理
3,完整的订阅 /取消范例
Subscribe.asp(续 ),
rs.Update
End If
Set rs = Nothing
Set Conn = Nothing
%>
<html>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<body>
<blockquote>
<p>中国渤海体育网
http://www.zgbhtyw.com.cn </p>
<p><% = Title %>系统 </p>
<hr size="1">
<%
Select Case Status
Case 0
Msg = "欢迎订阅 " + Title
Case 1
Msg = "取消订阅 " + Title
End Select
%>
<p><%=Request("Email") %> - <% =
Now %></p>
<% = Msg %>
<hr size="1">
<% = Title %> Design by student,Ding
</blockquote>
</body>
</html>
24
11.2 电子报 E-Newspaper
11.2.4 发送电子报发送电子报是本系统的重头戏。在 IIS中内置
SMTP(发信 )的服务,通过 SMTP服务我们就可以轻松地发送电子报。不过有一点值得注意的是,若您要通过 Web发送电子报 (也即通过浏览器发送大量电子报 ),
可能会发生 Timeout的情形,原因是浏览器无法在约定的时间内收到 IIS的响应所造成。
发送电子报分为前台及后台两大部分,其中前台搜集电子报的信息,制作成报纸的文字稿文件,然后交由后台的电子报发行系统发送。
25
11.2 电子报 E-Newspaper
11.2.4 发送电子报在本系统中,报纸的文稿内容置于 newspaper.txt文件中 。 电子报发行系统则是由 Web上启动,启动的网页 ASP源代码 (NewsPaper.asp)如下:
<html>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<body>
<form action="SendPaper.asp" method="post">
【 中国渤海体育网 】 ─电子报发行中心 <br>
<br>
现在的时间,<% = Now %><br>
<input type="submit" name="Send" value="发送电子报 ">
</form>
</body>
</html>
26
11.2 电子报 E-Newspaper
11.2.4 发送电子报执行结果如下图所示 。
当电子报发行中心管理者按下 按钮之后,会自动启动电子报发行系统 (SendPaper.asp),由系统根据订阅的数据库的各条,逐一发送足球电子报 。
27
11.2 电子报 E-Newspaper
11.2.4 发送电子报整个电子报发行系统可分为下列三大部分:
● 加载足球电子报文稿
● 筛选订阅数据库的订阅名单
● 发送足球电子报
1,加载足球电子报文稿本电子报采用纯文本的电子报格式,电子报的文稿置于电子报发行系统同一目录下,因此,我们采用
FileSystemObject 加载足球电子报文稿。
28
11.2 电子报 E-Newspaper
11.2.4 发送电子报加载电子报文稿的 ASP程序代码如下:
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fp = fso.OpenTextFile(Server.MapPath("newspaper.txt"))
Article = fp.ReadAll?加载文件 newspaper.txt的内容
fp.close
Set fp = Nothing
Set fso = Nothing
newspaper.txt文件的内容 (略 ):
29
11.2 电子报 E-Newspaper
11.2.4 发送电子报
2,筛选订阅数据库的订阅名单根据订阅电子报的数据库定义我们可以看出,有关订阅者的信息必须符合 Status=?1?的条件,方为目前尚在订阅的订户。因此筛选数据库的 SQL命令如下:
Select * from tjhldgz WHERE Status = '1'
有了上面的 SQL命令,我们根据前面讲的 ASP的 ADO数据库的写法,编写筛选订户的 ASP程序代码如下:
dim Conn,rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL Server};
Database=WebHL;Server=(Local);uid=sa;pwd="
sql = "Select * from tjhldgz WHERE Status = '1'"
Set rs = Conn.Execute(sql)
30
11.2 电子报 E-Newspaper
11.2.4 发送电子报
3,发送足球电子报当电子报文稿及订户资料都已备妥之后,接下来我们就可以通过电子邮件发送电子报,因此使用 SMTP的服务是避免不了的。为了记录发送电子报的份数,我们设计了一个变量 SendCount记录发送份数,在发送完毕后告知成功发送的份数 (此为 ASP送给 SMTP的份数 )。
除了真正发送成功的份数,还必须检查退件的份数,方可统计出实 际发送成功的份数。发送电子报的 ASP程序代码如下:
SendCount = 0
Do While not rs.Eof
Set CDOMail =
Server.CreateObject("CDONTS.
NewMail")
CDOMail.From =
"student@zgbhtyw.com.cn"
CDOMail.To = rs("Email")
CDOMail.Subject = "[中国渤海体育 ][足球电子报 ]"
CDOMail.Body = Article
CDOMail.Send
Set CDOMail = Nothing
SendCount = sendCount + 1
rs.MoveNext
Loop
31
11.2 电子报 E-Newspaper
11.2.4 发送电子报
4,完整的发送电子报程序完整的 ASP电子报发送程序 (SendPaper.asp)如下:
<%
' ========================
' 加载电子报内容
' ========================
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fp = fso.OpenTextFile(Server.MapPath("newspaper.txt"))
Article = fp.ReadAll '加载文件 newspaper.txt的内容
fp.close
Set fp = Nothing
Set fso = Nothing
' ========================
' 订阅电子报数据库
' ========================
dim Conn,rs
Set Conn = Server.CreateObject("ADODB.Connection")
32
11.2 电子报 E-Newspaper
11.2.4 发送电子报
4,完整的发送电子报程序完整的 ASP电子报发送程序 SendPaper.asp (续 )如下:
Conn.Open "Driver={SQL Server};
Database=WebHL;Server=(Local);uid=sa;pwd="
sql = "Select * from tjhldgz WHERE Status ='1'"
Set rs = Conn.Execute(sql)
' ========================
' 发送电子报
' ========================
SendCount = 0
Do While not rs.Eof
Set CDOMail = Server.CreateObject("CDONTS.NewMail")
CDOMail.From = "student@zgbhtyw.com.cn"
CDOMail.To = rs("Email")
CDOMail.Subject = "[中国渤海体育 ][足球电子报 ]"
CDOMail.Body = Article
CDOMail.Send
33
11.2 电子报 E-Newspaper
11.2.4 发送电子报
4,完整的发送电子报程序完整的 ASP电子报发送程序 SendPaper.asp (续 )如下:
Set CDOMail = Nothing
SendCount = sendCount + 1
rs.MoveNext
Loop
%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<body>
电子报发行开始,<%=Now%><br>
电子报发送完毕,共计送 <%=SendCount%>份电子报。 <br>
电子报发行结束,<%=Now%><br>
<br>
【 中国渤海体育网 】 ─电子报发行系统 Design by student,Ding
</body>
</html>
34
11.2 电子报 E-Newspaper
11.2.4 发送电子报发送的结果当报纸发送完毕,本系统会自动回报发送的份数及花费的时间等信息,提供电子报发行中心作为参考。下面是发送电子报后的响应画面,如下图所示。
35
11.2 电子报 E-Newspaper
11.2.4 发送电子报查看发出的信件在本例中,我们为了测试电子报发送是否正确,在数据库中我们预留了一条 E-mail,现在启动 Outlook Express查看信件是否正确,
如下图所示。
36
11.2 电子报 E-Newspaper
11.2.4 发送电子报
5,潜在的问题由于电子报是以 Web方式来管理及发送,因此它可能会发生因会员人数太多,无法一时之间发送完毕而发生超时 (Timeout)的困扰。例如 PCHome的会员有数百万名,若利用 ASP发送电子报,要发完这些订户的电子报,不发生 Timeout才怪。解决的方式有赖于利用程序语言 (例如 Delphi,C++ Builder,VB等 )编写电子报发行程序来解决。
但是对于小型的电子报发行中心来说,利用 IIS提供的 SMTP寄信服务,ASP就足以应付发送电子报的需求了。
37
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
IIS提供的 SMTP服务也支持 HTML的电子邮件格式。
发送 HTML电子邮件的用法如下:
Set mailObj = CreateObject("CDONTS.NewMail")
mailObj.From = Request("from")
mailObj.To = rs("Email")
mailObj.Subject = Request("Subject")
mailObj.BodyFormat = 0
mailObj.MailFormat = 0 ' BodyFormat=0 & MailFormat=0
mailobj.Body = s
mailObj.Send '发送电子报
Set mailObj = Nothing
其中最重要的地方是 BodyFormat与 MailFormat的属性均需设为 0。
38
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件一般来说,网络电子报发行中心的创建,利用
Windows的 SMTP服务进行网络电子报发行服务,至少需具备下列三大组件:
( 1)订阅电子报的用户数据库 (SQL Server)
( 2)报纸内容编辑 (HTML)
( 3)电子报发行程序 (ASP)
1,订阅电子报的用户数据库电子报订阅数据库我们采用最简单的格式,仅存放订户的电子邮件地址 (E-mail)。
39
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
1,订阅电子报的用户数据库创建订户表的步骤如下:
( 1)请点选 \所有程序 \Microsoft SQL Server\企业管理器命令,启动企业管理器,如下图所示。
40
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
1,订阅电子报的用户数据库创建订户表的步骤如下:
( 2)展开某个数据库 (如 WebHL),点选“表”,单击鼠标右键,
选择“新建表”命令,创建新的表,如下图所示。
41
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
1,订阅电子报的用户数据库创建订户表的步骤如下:
( 3)请输入 Email和 Name两个字段,数据类型及字段长度分别为
varchar(40)及 varchar(10),并设置 Email字段为主键,如下图所示。
( 4)按下保存钮,出现“选择名称”对话框,输入表名称
,Subscriber”,单击 按钮。关闭窗口,完成新建表操作。
42
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
2,报纸内容编辑在互联网上,技术并不是最重要的,网站的服务必须以内容取胜,因此电子报服务中,还是以内容最为重要。电子报除了要言之有物之外,版面的编排是否符合订户的需求,这些都将成为影响办报是否成功的关键因素。
有关 HTML电子报版面的编排,应以简洁美观为主,建议读者采用 HTML与 CSS搭配的方式,以降低电子报编辑及维护的工作,并可减少发送电子报对带宽的需求。
43
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
2,报纸内容编辑下面是 HTML电子报结合 CSS的源代码 (papercont.htm),
<html>
<head>
<style type="text/css">
.bodytext { color,black; font-weight,normal; font-family,宋体 ; font-size,9pt }
.title { color,blue ; font-weight,normal; font-family,宋体 ; font-size,11pt }
a,td { color,black; font-weight,normal; font-family,宋体 ; font-size,11pt }
</style>
</head>
<body>
<p class=title>亲爱的球迷朋友们,</p>
<pre class=bodytext>
您知道吗?从现在起订阅 [足球电子报 ]不仅可以免费订阅,还可以收大礼包。订阅 [球迷报 ]活动现在开始,在本次活动中,读者只要在各邮局和中国渤海体育网订阅 [球迷报 ],均可凭订报收据,到中国渤海体育网站换取价值
180元超值礼包。
</pre>
44
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
2,报纸内容编辑下面是 HTML电子报结合 CSS的源代码 papercont.htm (续 ),
<img src="web.gif">,..
<table class=bodytext><tr>
<td>铁杆球迷朋友请注意,一览足球天下的
<a href="http://www.zgbhtyw.com.cn/aspbook/11/01.htm">足球电子报 </a>是您最佳的选择。 </td>
</tr><tr>
<td>准球迷的朋友,请订阅
<a href="http://www.zgbhtyw.com.cn/aspbook/11/03.htm">球迷报 </a>为您及时获知中超赛事进程。 </td>
</tr><tr bgcolor="#efefef">
<td align=center>中国渤海体育网 祝您快乐健康,顺心如意 </td> </tr>
</table></body>
</html>
45
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
2,报纸内容编辑执行结果如下图所示。
说明,HTML电子报中,若有指定使用图形文件 <img src="图文件名 " >,请必须使用绝对路径,本例为在本机测试,图形文件与 HTML代码在同一文件夹中,故写成 <img src="web.gif">,指定图片 web.gif的设置。
46
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序当订户数据库及电子报内容都搞定以后,接下来就是电子报发行的重头戏了,电子报发行中心采用 SMTP服务进行电子报发行作业。电子报发行作业的处理流程如下:
( 1)取得订户的名单
( 2)加载 HTML格式的电子报
( 3)发送电子报
● 取得订户的名单在本例中,订户数据库置于 WebHL,首先我们必须以 SQL
Command筛选出订户的 E-mail地址。
47
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序数据库的连接设置与 SQL Command如下:
● 加载 HTML格式的电子报加载电子报最简单的方法是利用 FileSystemObject提供创建文件对象的功能。通过 FileSystemObject提供的 OpenTextFile方法打开指定的
HTML电子报,最后再用 FileObject的 ReadAll方法取得文件内容至变量 s。
dim Conn,rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL Server};Database=WebHL;
Server=(Local);uid= sa;pwd="
SQL = "SELECT * FROM SubScriber WHERE Email IS NOT NULL"
Set rs = Conn.Execute(SQL) '执行 SQL Command
48
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序其程序代码如下:
● 发送电子报为了制作一个电子报发行程序,笔者使用 HTML与 CSS样式表,
编写了一个简单、美观又大方的电子报发行程序范例。
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fp = fso.OpenTextFile(Request("mailfile"))
'加载电子报版面设置文件 (HTML/Text格式 )
s = fp.ReadAll
fp.close
Set fp = Nothing
Set fso = Nothing
49
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序程序的源代码 (sendmail.htm)如下所示:
<HTML>
<HEAD>
<style type="text/css">
<!—
.topic { font-family:,宋体 "; font-size,11pt; vertical-align,middle; line-height:16pt;}
.small { font-family:,宋体 "; font-size,9pt; vertical-align,middle; line-height:16pt;}
input { font-family:,宋体 "; font-size,9pt; vertical-align,middle; line-height:12pt;}
a:link {color:#0F56A3;font-style:normal;cursor:hand;text-decoration:normal}
a:visited {color:#0F56A3;font-style:normal;text-decoration:normal}
a:active {color:#0F56A3;font-style:normal;text-decoration:normal}
a:hover {color:#CC0000;font-style:bold;text-decoration:none}
-->
</style>
<TITLE>发送电子报 </TITLE>
<META HTTP-EQUIV="Content-Type"CONTENT="text/html" charset="GB2312">
</HEAD>
50
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序程序的源代码 sendmail.htm(续 )如下所示:
<BODY bgcolor="#FFFFFF">
<form action="sendmail.asp" method="post">
<table align=center border="1" cellspacing="0" cellpadding="1“
bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF" bgcolor="#F2FDFD">
<tr>
<td colspan=4 align="center" class=topic bgcolor="#eaeaf4">
【 中国渤海体育网 ─电子报发行中心 】 </td>
</tr>
<tr>
<td colspan=4 align="center" bgcolor="#ffefbf">上线日期 </td>
</tr>
<tr bgcolor="#bdf3eb" class=small>
<td align=right><div align="center">寄 件 人 </div></td>
<td><input type="text" name="from" size="56" value=""></td>
</tr>
<tr bgcolor="#eaeaf4" class=small>
51
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序程序的源代码 sendmail.htm(续 )如下所示:
<td align=right><div align="center">电子报标题 </div></td>
<td><input type="text" name="subject" size="56" value=""></td>
</tr>
<tr bgcolor="#bdf3eb" class=small>
<td align=right><div align="center">电子报格式 </div></td>
<td>
<input type=radio name="format" value=0 checked>HTML
<input type=radio name="format" value=1>Text
</td>
</tr>
<tr bgcolor="#eaeaf4" class=small>
<td align=right><div align="center">电子报文件名 </div></td>
<td><input type=file name="mailfile" size="45" value=""></td>
</tr>
<tr bgcolor="#bdf3eb">
<td align=center colspan=2>
52
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序程序的源代码 sendmail.htm(续 )如下所示:
<input type="submit" value="送出 " name="send">
<input type="reset" value="重填 " name="clear">
</td>
</tr>
</table>
</form>
<p align=center class=small>
<a href="http://www.zhtyw.com.cn">首页 </a> |
<a href="http://www,zhtyw.com.cn/newbook01.htm">最新书讯 </a> |
<a href="http://www,zhtyw.com.cn /cdmenu01.htm">教学光盘 </a> |
<a href="http://www.tjhldgz.com.cn">英才求职网 </a> |
<a href="mailto:service@ zhtyw.com.cn">服务信箱 </a>
</p></BODY>
</HTML>
53
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序在浏览器的执行结果如下图所示 。
此电子报发行程序支持纯文本,HTML格式的电子报 。 电子报文件可以由在线指定,因此可以说是完整的 Web电子报发行程序 。
当用户按下,送出,钮之后,系统根据 <form>标记的 Action指定,
自动启动 sendmail.asp程序进行电子报发送作业,并将电子报发行的结果显示于浏览器上 。
54
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序发送结果的画面如下图所示 。
55
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码如下所示:
<%
dim Conn,rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL
Server};Database=WebHL;Server=(Local);uid=sa;pwd="
SQL = "SELECT * FROM SubScriber WHERE Email IS NOT NULL"
Set rs = Conn.Execute(SQL)
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fp = fso.OpenTextFile(Request("mailfile"))
' 加载电子报版面设置文件 (HTML/Text格式 )
s = fp.ReadAll
fp.close
Set fp = Nothing
Set fso = Nothing
fmt = Int(Request("format")) ' 电子报格式
Session.Timeout = 1200 '设置 Session的 Timeout时间 (单位:秒 )
56
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
Server.ScriptTimeOut = 1200
'设置 Server的 ScriptTimeOut时间 (单位:秒 )
RecCount = 0
Do While not rs.eof
RecCount = RecCount + 1
On Error Resume Next
Set mailObj = CreateObject("CDONTS.NewMail")
mailObj.From = Request("from")
mailObj.To = rs("Email")
mailObj.Subject = Request("Subject")
mailObj.BodyFormat = 0 ' HTML格式
mailObj.MailFormat = 0 ' BodyFormat=0 & MailFormat=0
mailobj.Body = s
mailObj.Send '发送电子报
57
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
Set mailObj = Nothing
On Error GoTo 0If Err.Number > 0 Then
Response.Write("发送第 " & RecCount & "笔时发生错误 (" & rs("Email") & ")")
Exit DoEnd If
rs.MoveNextLoop
Set rs = Nothing
Set Conn = Nothing%>
<HTML><HEAD>
<style type="text/css">
<!—.topic { font-family,"宋体 "; font-size,11pt; vertical-align,middle; line-height:16pt;}
58
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
.small { font-family,"宋体 "; font-size,9pt; vertical-align,middle; line-height:16pt;}
input { font-family,"宋体 "; font-size,9pt; vertical-align,middle; line-height:12pt;}
a:link {color:#0F56A3;font-style:normal;cursor:hand;text-decoration:normal}
a:visited {color:#0F56A3;font-style:normal;text-decoration:normal}
a:active {color:#0F56A3;font-style:normal;text-decoration:normal}
a:hover {color:#CC0000;font-style:bold;text-decoration:none}
-->
</style>
<TITLE>发送电子报 </TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html" charset="GB2312">
</HEAD>
<BODY bgcolor="#FFFFFF">
<form action="sendmail.asp" method="post">
<table align=center border="1" cellspacing="0" cellpadding="2"
bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF" bgcolor="#F2FDFD">
<tr>
59
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
<td colspan=4 align="center" class=topic bgcolor="#eaeaf4">
【 中国渤海体育网 ─电子报发行中心 】 </td>
</tr>
<tr bgcolor="#ffefbf">
<td colspan=4 align="center">上线日期,<%=Date%></td>
</tr>
<tr bgcolor="#bdf3eb" class=small>
<td align=right>寄件人 </td>
<td><%= Request("from") %></td>
</tr>
<tr bgcolor="#eaeaf4" class=small>
<td align=right>电子报标题 </td>
<td><%= Request("subject") %></td>
</tr>
<tr bgcolor="#bdf3eb" class=small>
<td align=right>电子报格式 </td>
60
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
<td>
<%
If Request("format")=0 Then
f0 = "checked"
Else
f1 = "checked"
End If
%>
<input type=radio name="format" value=0 <% =f0 %>>HTML
<input type=radio name="format" value=1 <% =f1 %>>Text
</td>
</tr>
<tr bgcolor="#eaeaf4" class=small>
<td align=right>电子报文件名 </td>
<td><%= Request("mailfile") %></td>
</tr>
61
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
3,电子报发行程序
sendmail.asp的源代码 (续 )如下所示:
<tr bgcolor="#bdf3eb" class=small>
<td align=right>状态 </td>
<td>电子报发行处理完毕,共寄出 <% = RecCount %> 封电子报。 </td>
</tr>
</table>
</form>
<p align=center class=small>
<a href="http://www.zhtyw.com.cn">首页 </a> |
<a href="http://www,zhtyw.com.cn/newbook01.htm">最新书讯 </a> |
<a href="http://www,zhtyw.com.cn /cdmenu01.htm">教学光盘 </a> |
<a href="http://www.tjhldgz.com.cn">英才求职网 </a> |
<a href="mailto:service@ zhtyw.com.cn">服务信箱 </a>
</p>
</BODY>
</HTML>
62
11.2 电子报 E-Newspaper
11.2.5 HTML格式的电子邮件
4,确认电子报无误第一次发送电子报,请记住先试寄给自己一份,以确定电子报可正确无误地送到订户的手上。在上述的电子报发送过程中,笔者也寄给自己一份电子报。当我用 Outlook Express收取信件时,版面完全正确无误的显示 (图形也正确的显示 ),如下图所示。