WEB开发技术 第四章
4.2 Email组件与站点导航组件
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
课程引入与回顾
? FileSystemObject 对象用于访问服务器上
的文件系统。此对象可操纵文件、文件夹
和目录路径。
? LyfUpload组件用于将浏览器方的文件上传到 WEB服务
器方
目标
? 用 email组件来发送邮件
? 用文件超链接组件来管理站点导航
4.3 EMAIL组件
用来发送邮件
W3 Jmail组件简介
? W3Jmail 是一个 SMTP组件,利用它可以
发送文本格式和 HTML格式的邮件,使用
w3 JMail 可以在 asp应用里面发送电子邮件。
? 下载地址:
http://download.dimac.net/jmail/jmail.exe
W3 Jmail组件 使用方法
? 执行 jmail.exe自动注册
? 就可以和其它组件一样使用了
? 语法
– Set 对象名 =Server.CreateObject(“jmail.smtpmail”)
W3 Jmail组件常用属性 (设对象名为 jmail)
属 性 说 明
Body 信件体,正文,使用 AppendText追加内容
如,JMail.Body = "Hello world"
Charset 字符集,缺省为 "US-ASCII"
如要支持中文,JMail.Charset =,gb2312"
ContentType 信件的 contentype,缺省是 "text/plain",但是可以设置为其他你
想要的类型, 如果你以 HTML格式发送邮件,改为 "text/html"即
可。 如,JMail.ContentType = "text/html"
Log Jmail创建的日志,如果 loging属性设置为 true
如,Response.Write( JMail.Log );
Logging 是否使用日志 。如,JMail.Logging = true
Priority 优先级, 范围在 1-5之间
1 高优先级, 有些邮件程序称之为紧急 ; 2 也是高优先级
3 普通优先级 ; 4 低优先级 ; 5 最低的优先级
如,JMail.Priority = 3
DeferredDelivery 设置延期发送, 如果邮件服务器支持的话,消息到了这个时间
才会发送, 如,JMail.DeferredDelivery = new Date( 2000,
02,17 ).getVarDate();
W3 Jmail组件常用属性 (续 )
属 性 说 明
Recipients 只读属性,返回所有收件人
如,Response.Write( "" + JMail.Recipients + "" );
ReplyTo 指定一个可选的回信地址
如,JMail.ReplyTo = "president@dimac.net"
ReturnReceipt 指定是否发件人需要一个回复收据, 缺省是 false
如,JMail.ReturnReceipt = true
SenderName 指定发件人的姓名
如,JMail.SenderName = "Bat man"
ServerAddress 指定邮件服务器的地址。可以指定多个服务器,用分号点开。
可以指定端口号。
如,JMail.ServerAddress = "mail.mydom.net;
mail2.mydom.net:2500"
Subject 设定消息的标题
如,JMail.Subject = "Dimac rocks big time!"
Sender 指定发件人的邮件地址
如,JMail.Sender = "batman@dimac.net"
W3 Jmail组件 常用方法
方 法 说 明
AddAttachment 添加文件附件到信件
如,JMail.AddAttachment( "c:\\autoexec.bat" );
AddHeader 添加用户定义的 X-header到 message
如,JMail.AddHeader( "Originating-IP",request.servervariables(“REMOTE_ADDR”) );
AddRecipient 增加收件人, 如,JMail.AddRecipient( "info@dimac.net" );
AppendText 追加信件的正文内容
如,JMail.AppendText( "Text appended to message Body" );
AppendBodyFromFi
le
将一个文件内容追加到正文后
如,JMail.AppendBodyFromFile( "c:\\mytext.txt" );
Close() 强制 JMail关闭缓冲的与邮件服务器的连接
如,JMail.Close();
Execute 执行邮件的发送
如,JMail.Execute();
AddRecipientCC 增加抄送收件人
如,JMail.AddRecipientCC( "someone@somedomain.net" );
发送邮件示例
<%
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "system.mail"
JMail.Logging = true
JMail.Charset = "gb2312"
JMail.Sender = "ddd@system.mail"
JMail.Subject = "邮件测试 "
JMail.AddRecipient "kkk@system.mail"
JMail.Body = "Here you go,Your request has been approved" &_
"and the program is attached to this message"
JMail.Priority = 1
JMail.AddHeader "Originating-IP",
Request.ServerVariables("REMOTE_ADDR")
JMail.Execute()
Response.Write "邮件发送成功! "
%>
4.4 文件超链接组件
用来建立易于维护的索引站点
文件超链接组件使用方法
? 步骤
(1) 建立超链接 数据文件, *.txt
(2) 建立显示链接的页面,*.asp
? 语法:
– Set 对象名 =Server.CreateObject(“MSWC.nextlink”)
? 文件超链接组件的方法
文件超链接组件的常见方法
方 法 说 明
GetListCount 返回超链接的地址个数
语法,n=<对象实例 >,GetListCount(<文件名 >)
GetListIndex 返回当前页的位置
语法,n=<对象实例 >,GetListIndex (<文件名 >)
GetNextURL 返回超链接文件中的下一个 URL地址
GetPreviousURL 返回超链接文件中的上一个 URL地址
GetNextDescription 返回超链接文件中的下一个地址的描述
GetPreviousDescription 返回超链接文件中的上一个地址的描述
GetNthURL 返回超链接文件中的第 N个 URL地址
n=<对象实例 >,GetNthURL (<文件名 >,index)
GetNthDescription 返回超链接文件中的第 N个地址描述
n=<对象实例 >,GetNthDescription (<文件名 >,index)
文件超链接组件使用示例
1,建立超链接数据文件 (link.txt)
www.chinaasp.com 中国 ASP网站
www.fanso.com 会 化云坊
www.edu.cn 中国教育网
www.sohu.com 搜狐
建立超链接数据文件 (link.txt)的注意事项
? 每行只写一个链接地址及其描述,它们之
间用 TAB键分开
? 链接地址可以是完整的网址或相对路径
? 链接地址前不要加上 http://
建立显示链接的页面
<%
Dim Link '定义一个组件实例变量
Dim I,Sum '定义两个变量待用
Set Link=Server.CreateObject("MSWC.nextlink")
Sum=Link.GetListCount("link.txt") '返回 URL网络导航总数
For I=1 to Sum '用循环依次写出所有的网络导航
%>
<a href="http://<%=Link.GetNthURL("link.txt",I)%>"
target="_New">
<%=Link.GetNthDescription("link.txt",I)%></a><br>
<% Next %>
简单 BBS文章发布示例
? 创建一个简单的讨论组,用户可以读取文章或发
表文章
? 主要包括四个文件
– 文章发布页:用来发布文章 (post.htm)
– 文件导航页 (包含页 ):用于前后文章的导航 (new.inc)
– 新文章处理页:保存新文章并更新链接数据文件
(newitem.asp)
– 讨论组的主页:提供文章发布的入口和链接信息的显
示 (news.asp)
用来发布文章 (post.htm)
<HTML>
<HEAD><TITLE>东方 BBS文章发布页 </TITLE></HEAD>
<BODY>
<h2>添加一个新消息 </h2>
<form method=post action="newitem.asp">
主题,<input type=text name=subject size=50 maxlength=50>
<br>
<textarea name=Posting cols=60 rows=10wrap="Virtual"></textarea>
<p>
<input type=Submit Value="发布信息 "><input type=Reset value="清除 ">
</Form>
</Body>
</Html>
用于前后文章的导航 (new.inc)
<hr>
<%
Set mylinks=Server.CreateObject("MSWC.NextLink")
IF mylinks.GetListIndex("news.txt")>2 THEN
%>
<a Href="<%=mylinks.GetPreviousURL("news.txt") %>">
前一篇文章 </a>
<% End IF %>
<%IF mylinks.GetListIndex("news.txt")<mylinks.GetListCount("news.txt") THEN
%>
<a Href="<%=mylinks.GetNextURL("news.txt") %>">
后一篇文章 </a>
<% End IF %>
<p>
<a href="news.asp">返回主页 </a>
新文章处理页面 (newitem.asp)
<%
TheSubj=Server.HTMLEncode(Request.Form("subject"))
If TheSubj ="" THEN TheSubj="无标题 "
ThePost="<HTML><HEAD><TITLE>"&TheSubj&"</TITLE></HEAD><BODY>"
ThePost=ThePost&"发表日期,"&NOW&"<Hr>"
ThePost=ThePost&Server.HTMLEncode(Request.Form("Posting"))
ThePost=ThePost&"<!-- #INCLUDE file=""news.inc"" -->"
ThePost=ThePost&"</BODY></HTML>"
Set mylinks=Server.CreateObject("MSWC.NextLink")
TheName="item"&mylinks.GetlistCount("news.txt")+1&".asp"
TheNamePath=Server.Mappath(TheName)
response.write thnamepath
Set MyFileObj=Server.CreateObject("Scripting.FileSystemObject")
Set MyOutStream=MyFileObj.CreateTextFile(TheNamePath)
MyOutStream.Write ThePost
MyOutStream.Close
TheNews=Server.MapPath("news.txt")
Set MyNews=MyFileObj.OpenTextFile(TheNews,8,TRUE)
MyNews.WriteLine TheName&vbTab&TheSubj
MyNews.Close
%>
主页面 (news.asp)
<%
Set mylinks=Server.CreateObject("MSWC.NextLink")
%>
<HTML>
<HEAD><TITLE>讨论组主页 </TITLE></HEAD>
<BODY>
发布信息数,<%=Mylinks.GetListCount("news.txt") %>
<hr>
[<a href="post.htm"> 发布新文章 </a>]
<UL>
<%
For i=2 to mylinks.GetListCount("news.txt")
%>
<LI>
<a href="<%=mylinks.GetNthURL("news.txt",i)%>">
<%=mylinks.GetNthDescription("news.txt",i)%></a>
<%
next
%>
</ul>
</body>
</html>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? email组件可用来发送邮件
? 文件超链接组件来实现站点导航功能
习题与作业
? 利用站点导航组件实现简单的 BBS文章发布功能,
如下图所示
? 利用 EMAIL组件实现通过浏览器来发送 EMAIL
4.2 Email组件与站点导航组件
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
课程引入与回顾
? FileSystemObject 对象用于访问服务器上
的文件系统。此对象可操纵文件、文件夹
和目录路径。
? LyfUpload组件用于将浏览器方的文件上传到 WEB服务
器方
目标
? 用 email组件来发送邮件
? 用文件超链接组件来管理站点导航
4.3 EMAIL组件
用来发送邮件
W3 Jmail组件简介
? W3Jmail 是一个 SMTP组件,利用它可以
发送文本格式和 HTML格式的邮件,使用
w3 JMail 可以在 asp应用里面发送电子邮件。
? 下载地址:
http://download.dimac.net/jmail/jmail.exe
W3 Jmail组件 使用方法
? 执行 jmail.exe自动注册
? 就可以和其它组件一样使用了
? 语法
– Set 对象名 =Server.CreateObject(“jmail.smtpmail”)
W3 Jmail组件常用属性 (设对象名为 jmail)
属 性 说 明
Body 信件体,正文,使用 AppendText追加内容
如,JMail.Body = "Hello world"
Charset 字符集,缺省为 "US-ASCII"
如要支持中文,JMail.Charset =,gb2312"
ContentType 信件的 contentype,缺省是 "text/plain",但是可以设置为其他你
想要的类型, 如果你以 HTML格式发送邮件,改为 "text/html"即
可。 如,JMail.ContentType = "text/html"
Log Jmail创建的日志,如果 loging属性设置为 true
如,Response.Write( JMail.Log );
Logging 是否使用日志 。如,JMail.Logging = true
Priority 优先级, 范围在 1-5之间
1 高优先级, 有些邮件程序称之为紧急 ; 2 也是高优先级
3 普通优先级 ; 4 低优先级 ; 5 最低的优先级
如,JMail.Priority = 3
DeferredDelivery 设置延期发送, 如果邮件服务器支持的话,消息到了这个时间
才会发送, 如,JMail.DeferredDelivery = new Date( 2000,
02,17 ).getVarDate();
W3 Jmail组件常用属性 (续 )
属 性 说 明
Recipients 只读属性,返回所有收件人
如,Response.Write( "" + JMail.Recipients + "" );
ReplyTo 指定一个可选的回信地址
如,JMail.ReplyTo = "president@dimac.net"
ReturnReceipt 指定是否发件人需要一个回复收据, 缺省是 false
如,JMail.ReturnReceipt = true
SenderName 指定发件人的姓名
如,JMail.SenderName = "Bat man"
ServerAddress 指定邮件服务器的地址。可以指定多个服务器,用分号点开。
可以指定端口号。
如,JMail.ServerAddress = "mail.mydom.net;
mail2.mydom.net:2500"
Subject 设定消息的标题
如,JMail.Subject = "Dimac rocks big time!"
Sender 指定发件人的邮件地址
如,JMail.Sender = "batman@dimac.net"
W3 Jmail组件 常用方法
方 法 说 明
AddAttachment 添加文件附件到信件
如,JMail.AddAttachment( "c:\\autoexec.bat" );
AddHeader 添加用户定义的 X-header到 message
如,JMail.AddHeader( "Originating-IP",request.servervariables(“REMOTE_ADDR”) );
AddRecipient 增加收件人, 如,JMail.AddRecipient( "info@dimac.net" );
AppendText 追加信件的正文内容
如,JMail.AppendText( "Text appended to message Body" );
AppendBodyFromFi
le
将一个文件内容追加到正文后
如,JMail.AppendBodyFromFile( "c:\\mytext.txt" );
Close() 强制 JMail关闭缓冲的与邮件服务器的连接
如,JMail.Close();
Execute 执行邮件的发送
如,JMail.Execute();
AddRecipientCC 增加抄送收件人
如,JMail.AddRecipientCC( "someone@somedomain.net" );
发送邮件示例
<%
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "system.mail"
JMail.Logging = true
JMail.Charset = "gb2312"
JMail.Sender = "ddd@system.mail"
JMail.Subject = "邮件测试 "
JMail.AddRecipient "kkk@system.mail"
JMail.Body = "Here you go,Your request has been approved" &_
"and the program is attached to this message"
JMail.Priority = 1
JMail.AddHeader "Originating-IP",
Request.ServerVariables("REMOTE_ADDR")
JMail.Execute()
Response.Write "邮件发送成功! "
%>
4.4 文件超链接组件
用来建立易于维护的索引站点
文件超链接组件使用方法
? 步骤
(1) 建立超链接 数据文件, *.txt
(2) 建立显示链接的页面,*.asp
? 语法:
– Set 对象名 =Server.CreateObject(“MSWC.nextlink”)
? 文件超链接组件的方法
文件超链接组件的常见方法
方 法 说 明
GetListCount 返回超链接的地址个数
语法,n=<对象实例 >,GetListCount(<文件名 >)
GetListIndex 返回当前页的位置
语法,n=<对象实例 >,GetListIndex (<文件名 >)
GetNextURL 返回超链接文件中的下一个 URL地址
GetPreviousURL 返回超链接文件中的上一个 URL地址
GetNextDescription 返回超链接文件中的下一个地址的描述
GetPreviousDescription 返回超链接文件中的上一个地址的描述
GetNthURL 返回超链接文件中的第 N个 URL地址
n=<对象实例 >,GetNthURL (<文件名 >,index)
GetNthDescription 返回超链接文件中的第 N个地址描述
n=<对象实例 >,GetNthDescription (<文件名 >,index)
文件超链接组件使用示例
1,建立超链接数据文件 (link.txt)
www.chinaasp.com 中国 ASP网站
www.fanso.com 会 化云坊
www.edu.cn 中国教育网
www.sohu.com 搜狐
建立超链接数据文件 (link.txt)的注意事项
? 每行只写一个链接地址及其描述,它们之
间用 TAB键分开
? 链接地址可以是完整的网址或相对路径
? 链接地址前不要加上 http://
建立显示链接的页面
<%
Dim Link '定义一个组件实例变量
Dim I,Sum '定义两个变量待用
Set Link=Server.CreateObject("MSWC.nextlink")
Sum=Link.GetListCount("link.txt") '返回 URL网络导航总数
For I=1 to Sum '用循环依次写出所有的网络导航
%>
<a href="http://<%=Link.GetNthURL("link.txt",I)%>"
target="_New">
<%=Link.GetNthDescription("link.txt",I)%></a><br>
<% Next %>
简单 BBS文章发布示例
? 创建一个简单的讨论组,用户可以读取文章或发
表文章
? 主要包括四个文件
– 文章发布页:用来发布文章 (post.htm)
– 文件导航页 (包含页 ):用于前后文章的导航 (new.inc)
– 新文章处理页:保存新文章并更新链接数据文件
(newitem.asp)
– 讨论组的主页:提供文章发布的入口和链接信息的显
示 (news.asp)
用来发布文章 (post.htm)
<HTML>
<HEAD><TITLE>东方 BBS文章发布页 </TITLE></HEAD>
<BODY>
<h2>添加一个新消息 </h2>
<form method=post action="newitem.asp">
主题,<input type=text name=subject size=50 maxlength=50>
<br>
<textarea name=Posting cols=60 rows=10wrap="Virtual"></textarea>
<p>
<input type=Submit Value="发布信息 "><input type=Reset value="清除 ">
</Form>
</Body>
</Html>
用于前后文章的导航 (new.inc)
<hr>
<%
Set mylinks=Server.CreateObject("MSWC.NextLink")
IF mylinks.GetListIndex("news.txt")>2 THEN
%>
<a Href="<%=mylinks.GetPreviousURL("news.txt") %>">
前一篇文章 </a>
<% End IF %>
<%IF mylinks.GetListIndex("news.txt")<mylinks.GetListCount("news.txt") THEN
%>
<a Href="<%=mylinks.GetNextURL("news.txt") %>">
后一篇文章 </a>
<% End IF %>
<p>
<a href="news.asp">返回主页 </a>
新文章处理页面 (newitem.asp)
<%
TheSubj=Server.HTMLEncode(Request.Form("subject"))
If TheSubj ="" THEN TheSubj="无标题 "
ThePost="<HTML><HEAD><TITLE>"&TheSubj&"</TITLE></HEAD><BODY>"
ThePost=ThePost&"发表日期,"&NOW&"<Hr>"
ThePost=ThePost&Server.HTMLEncode(Request.Form("Posting"))
ThePost=ThePost&"<!-- #INCLUDE file=""news.inc"" -->"
ThePost=ThePost&"</BODY></HTML>"
Set mylinks=Server.CreateObject("MSWC.NextLink")
TheName="item"&mylinks.GetlistCount("news.txt")+1&".asp"
TheNamePath=Server.Mappath(TheName)
response.write thnamepath
Set MyFileObj=Server.CreateObject("Scripting.FileSystemObject")
Set MyOutStream=MyFileObj.CreateTextFile(TheNamePath)
MyOutStream.Write ThePost
MyOutStream.Close
TheNews=Server.MapPath("news.txt")
Set MyNews=MyFileObj.OpenTextFile(TheNews,8,TRUE)
MyNews.WriteLine TheName&vbTab&TheSubj
MyNews.Close
%>
主页面 (news.asp)
<%
Set mylinks=Server.CreateObject("MSWC.NextLink")
%>
<HTML>
<HEAD><TITLE>讨论组主页 </TITLE></HEAD>
<BODY>
发布信息数,<%=Mylinks.GetListCount("news.txt") %>
<hr>
[<a href="post.htm"> 发布新文章 </a>]
<UL>
<%
For i=2 to mylinks.GetListCount("news.txt")
%>
<LI>
<a href="<%=mylinks.GetNthURL("news.txt",i)%>">
<%=mylinks.GetNthDescription("news.txt",i)%></a>
<%
next
%>
</ul>
</body>
</html>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? email组件可用来发送邮件
? 文件超链接组件来实现站点导航功能
习题与作业
? 利用站点导航组件实现简单的 BBS文章发布功能,
如下图所示
? 利用 EMAIL组件实现通过浏览器来发送 EMAIL