仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 573|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之ASP开辟WAP浅易邮件体系实例

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧  下一篇:ASP开辟WAP浅易邮件体系实例(续)
  跟着手机用户的不休增添,WAP站点如雨后春笋敏捷的滋生开来,手机邮箱也不休的呈现在人的长远,笔者也已经开辟了一套手机邮箱的体系,但因为工夫仓皇再加上厥后一向忙于事情事变,体系功效也就再未增强,昔日有幸借助于IT168原创网公然出来,与人人配合分享,但愿人人能够小题大作,增强体系功效,可以更好的使用于实践。
  测试软件:OperaM3gate
  测试机型:Eg730+Nokia6681MotoV3i
  邮件组件:W3Jmail4.4
  1、WML布局先容
  起首我们先对WML的布局作个复杂的先容,以便于人人更好的扫瞄源码。
  〈?xmlversion="1.0"?〉
  〈!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http://www.wapforum.org/DTD/wml_1.1xml"〉
  〈wml〉
  〈head〉
  〈access/〉
  〈meta..../〉
  〈/head〉
  〈card〉
  Somecontents...
  〈/card〉
  〈wml〉
  我们依据以上布局举个最复杂的例子:
  〈%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%〉
  〈%Response.ContentType="text/vnd.wap.wml;charset=UTF-8"%〉
  〈?xmlversion="1.0"?〉
  〈!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http://www.wapforum.org/DTD/wml_1.1xml"〉
  〈wml〉
  〈cardtitle="邮件体系"〉
  〈p〉
  WML开辟邮件体系
  〈/p〉
  〈/card〉
  〈/wml〉
  将以上代码存为example.asp,间接经由过程M3gate检察,详细效如图一。


图一

  “邮件体系”这一段笔墨为UTF-8码,为了更好的合用于手机扫瞄,倡议编码格局接纳UTF-8,人人能够下载WAP编码转换器对中文举行转换。
  因为我们体系接纳ASP言语开辟,因而在以上代码段后面还需加上以下两段代码:
  〈%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%〉
  指定IIS以UTF-8的编码格局读取传送过去的串串(表单提交,地点栏传送等),假如必要以GB2312的格局读取,能够将65001换成936。
  〈%Response.ContentType="text/vnd.wap.wml;charset=UTF-8"%〉
  指定页面输入格局为WML,而且编码为UTF-8
  2、JMail组件功效先容
  W3Jmail是一个smtp组件,使用它能够发送邮件,撑持html格局邮件。你能够会见主页:http://tech.dimac.net下载这个组件。w3Jmail发送邮件速率快,功效丰厚,而且是收费的。
  以下是本体系所要用到的相干函数及属性,如需更具体的材料能够查阅JMail的官方申明。
  1、JMAIL.POP3
  创立POP3工具
  Setpop3=Server.CreateObject("JMail.POP3")
  Connect(Username,Password,Server,Port):
  翻开并毗连POP3服务器,
  Username:邮箱用户名
  Password:邮箱暗码
  Server:POP3服务器
  Port:服务器端标语,可选项,默许为110
  示例:mailbox.Connect"john","qwerty","mail.myDomain.com"
  Disconnect():
  封闭保持
  示例:mailbox.Disconnect
  DeleteSingleMessage(MessageID):
  从邮件服务器上删除由MessageID指定的邮件。
  Mailbox.DeleteSingleMessage1
  Messages():Pointer
  前往Message的汇合
  setmessages=mailbox.Messages
  2、JMAIL.MESSAGE
  创建Message工具:
  setMessage=server.CreateObject("Jmail.message")
  Silent():Boolean
  假如设置为true,JMail不会抛出破例毛病.JMail.execute()会依据操纵了局前往true或false
  示例:Message.silent=true
  Charset():String
  字符集,缺省为"US-ASCII"
  示例:Message.Charset="US-ASCII"
  From():String
  发件人
  示例:Message.From=”sn1985boy@sohu.com”
  Subject():String
  发送主题
  示例:Message.Subject=”测试”
  Body():String
  邮件主体部分
  示例:Message.Body=“祝贺发送乐成!”
  MailServerUserName():String
  用户名
  示例:Message.MailServerUserName=“*****”
  MailServerPassWord():String
  暗码
  示例:Message.MailServerPassWord=”********”
  MailDomain():String
  邮件服务器的域名
  示例:Message.MailDomain=”www.sohu.com”
  Priority():Byte
  告急水平,默许为3,1为最快,5为最慢
  示例:Message.Priority=2
  Send(mailServer,enque):Boolean
  发送邮件。邮件服务器是一个形貌邮件服务器称号或地点的字符串,用户名和暗码是可选项。当要发送认证邮件时利用格局为:用户名:暗码@邮件服务器
  示例:
  Message.Send("myMailServer"),Message.Send("myUserName:mypassword@mymailserver.mydomain.com")
  Count():Integer
  前往邮件数
  示例:i=mailbox.Count
  Item(Index):Pointer
  前往一个Message工具
  示例:setmsg=Messages.Item(0)
  Recipients():Pointer
  前往收件人汇合。
  示例:SetRecipients=msg.Recipients
  Attachments():Pointer
  前往邮件的附件汇合。
  示例:SetAttachments=msg.Attachments
  3、JMail.Recipients
  Count():Integer
  前往汇合中收件人的总数。
  示例:i=Recipients.Count
  Item(Index):Pointer
  前往汇合中的一个指定的收件人。
  示例:setre=Recipients.Item(0)
  4、JMail.Attachments
  Count():Integer
  前往汇合中附件的总数。
  示例:i=Attachments.Count
  3、邮件体系先容
  本邮件体系共包含上岸邮件、发送邮件、吸收邮件、删除邮件、复兴邮件五个功效,以下我们就对每一个功效举行独自先容,并附出源码,本教程一切图片为M3gate测试中的截图。
  1)上岸邮件


图二

  从图二中我们能够看出,上岸页面包含一个表单,表单中含有两个文本框与一个发送按钮,那末在WML言语中是怎样提交表单的呢?起首我们先看看wml言语中一些表单位素:1、input元素
  〈inputname="user"title="label"type="type"value="value"default="default"format="specifier"emptyok="false|true"size="n"maxlength="n"tabindex="n"/〉,用来输出文本,除name属性是需要的,其他可选。
  *name属性:指定了用来存储该输出文本的变量名字。
  *title属性:该输出框的名字,一样可被用来作为提要CARD页中的选项名。
  *type属性:默许值为text,如选择password,则输出的数据显现为*。
  *value属性:在语法和举动上同等于上面的default属性,
  *default属性:指定输出框的默许值,即name属性指定变量的默许值,当用户输出新值时,该值有效,假如该值不切合以下format属性的划定,则手机也疏忽该默许值。
  *format属性:用来格局化输出的数据,可用的标志以下,利用时可用“一名数字标志”和“*标志”的情势,前者代表N个标志型字符,如3X,后者代表恣意个(小于maxlength属性的值)标志型字符。
  标志   形貌
  A    任何标记大概年夜写字母(不包含数字)
  a    任何标记大概小写字母(不包含数字)
  N    任何数字(不包含标记大概字母)
  X    任何标记、数字大概年夜写字母(不成改动为小写字母)
  x    任何标记、数字大概小写字母(不成改动为年夜写字母)
  M    任何标记、数字大概年夜写字母(可改动为小写字母)大概多个字符,默许为首字年夜写
  m    任何标记、数字大概小写字母(可改动为年夜写字母)大概多个字符,默许为首字小写
  *maxlength属性:指定了用户可输出的最年夜字符长度,最年夜限定为256个字符。
  *emptyok属性:暗示用户能否不填输出框,默许为false,即要填。
  *size属性:输出框显现长度,今朝未被撑持。
  *tabindex属性:相似于在HTML表单中按TAB键后,核心落在哪一个选项上,该值决意了这个选择按次,数字年夜的排在前面。今朝未被撑持。
  示例:
  〈inputtype="text"title="用户名"name="user"maxlength="50"/〉
  2、do元素
  Do是WML言语中最有有代价的元素之一,它给用户供应一种在以后Card长进行"举措"的通用办法。
  属性列表:
  *type属性:告知扫瞄器举措的企图。
  WML统共声了然9个范例的举措,最经常使用的举措范例是"accept"和"option"。
  1、accept,承受、确认
  2、prev,前往上一个汗青仓库中的URL
  3、help,哀求匡助
  4、reset,扫除大概重置形态
  5、options,依据以后页面的功效设置选项。
  6、delete,删除选择条目
  7、unknow,相称于空缺字串
  8、vnd.*。vnd.*及别的分歧巨细写组合[Vv][Nn][Dd].*。这类范例界说的都是vnd.cotype,用于激活供给商或用户扫瞄器自界说的某个特定功效,个中co为公司(company)名的缩写。
  9、X-*与X-*。扩大范例,今朝WML中还没有利用。
  *label属性:设置按钮题目,显现在扫瞄器界说好的屏幕地位,分歧扫瞄器地显现地位分歧。假如不设置题目,按钮会依照扫瞄器的缺省格局显现,分歧扫瞄器的缺省格局分歧。
  *name属性:按钮称号,能够用Card级的举措掩盖template上的同名举措,从头付与那些举措新的义务。
  *optional属性:来界说一个按钮是不是显现,设置为True时会被扫瞄器疏忽
  示例:
  〈dotype="accept"label="发送"optional="false"〉
  {Content}
  〈/do〉
  3、go元素
  用来唆使扫瞄器显现指定的URL,包含DECK的第一个CARD大概指定的CARD。语法以下:
  〈gohref="url"sendreferer="false|true"method="get|post"accept-charset="charset"〉
  〈postfieldname="name"value="value"/〉
  〈setvarname="name"value="value"/〉
  〈/go〉
  个中href属性为必选,其他为可选。
  *sendreferer属性:是不是传送以后页的URL,默许值为false。
  *method属性:和HTML中的表单FORM的method属性一样,指定表单是以get的体例仍是post的体例递交,默许的值为get,但假如未指定method但〈go〉〈/go〉间存在〈postfield〉,手机主动以post体例传送。
  *accept-charset属性:可掩盖在HTTP头里指定的字符集,能够写多个字符集,如accept-charset="UTF-8,US-ASCII,ISO-8859-1"。
  〈postfieldname="name"value="value"/〉能够看做是HTML表单FORM中的〈INPUTTYPE="HIDDEN"NAME="变量名"VALUE="值"〉,经由过程它能够向指定的URL传送以“变量名/值”情势的数据。name和value属性都是必选的。注重只要这里的变量是用来递交给CGI程序的。
  除〈postfield〉,还能够在〈go〉和〈/go〉间到场一句大概多句〈setvarname="name"value="value"/〉,该语句的意义是,当触发某一事务时,给变量赋值。
  示例:
  〈gohref="main.asp"method="post"accept-charset="utf-8"〉
  〈postfieldname="user"value="$(user)"/〉
  〈postfieldname="pwd"value="$(pwd)"/〉〈/go〉
  〈/do〉
  邮件上岸界面源码:Index.asp
  〈%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%〉
  〈%Response.ContentType="text/vnd.wap.wml;charset=UTF-8"%〉
  〈?xmlversion="1.0"encoding="utf-8"?〉
  〈!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"〉
  〈wml〉
  〈cardtitle="邮箱上岸"〉
  〈palign="center"〉
  WelcomeToSohu-WAP-Mail〈/p〉
  〈p〉
  用户名:
  〈inputtype="text"title="用户名"name="user"maxlength="30"/〉
  〈br/〉密码:
  〈inputtype="password"title="暗码"name="pwd"maxlength="30"/〉〈br/〉
  〈dotype="accept"label="发送"optional="false"〉
  〈gohref="main.asp"method="post"accept-charset="utf-8"〉
  〈postfieldname="user"value="$(user)"/〉
  〈postfieldname="pwd"value="$(pwd)"/〉〈/go〉
  〈/do〉
  〈/p〉
  〈/card〉
  〈/wml〉
  2)邮件主页面
  邮件主页面次要功效为考证上岸页面传过去的用户名与暗码是不是准确,假如准确则显现相干的邮件操纵链接(如图四),反之则提醒暗码毛病请求从头输出(如图三)。因为某些挪动设备不撑持跳转,程序只管制止利用跳转语句。


图三(上岸失利)图四(上岸乐成)

  邮件主页面源代码:main.asp
  〈%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%〉
  〈%Response.ContentType="text/vnd.wap.wml;charset=UTF-8"%〉
  〈?xmlversion="1.0"encoding="utf-8"?〉
  〈!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"〉
  〈wml〉
  〈cardid="main"title="Sohu-PALM-MAIL平台"〉
  〈p〉
  〈%
  onerrorresumenext
  user=request("user")
  pwd=request("pwd")
  Setpop3=Server.CreateObject("JMail.POP3")
  pop3.connectuser,pwd,"http://pop3.sohu.com"
  pop3.Disconnect
  iferr.number〈〉0then
  response.write("上岸毛病,请反省用户名暗码是不是准确!〈br/〉")
  response.write("〈ahref=index.asp〉从头上岸〈/a〉〈/p〉〈/card〉〈/wml〉")
  response.End()
  endif
  response.write("接待你"&user&"@sohu.com〈br/〉")
  %〉
  〈ahref="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉〈br/〉
  〈ahref="send.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉发件箱〈/a〉〈br/〉
  〈ahref="index.asp"〉从头上岸〈/a〉〈br/〉
  〈/p〉
  〈/card〉
  〈/wml〉
  注:
  〈ahref="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉
  因为某些挪动设备其实不撑持session,为了更好的使用,故接纳url参数传送,遗憾的是如许做平安性不高,为了进步平安性,倡议对参数举行明文加密后再举行传送,在吸收页面在做绝对应的解密处置,固然假如你有甚么更好的举措,还请发邮件指出,感谢。
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!
小女巫 该用户已被删除
沙发
发表于 2015-1-19 09:32:35 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
老尸 该用户已被删除
板凳
发表于 2015-1-25 22:46:14 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
飘灵儿 该用户已被删除
地板
发表于 2015-2-4 11:49:22 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
谁可相欹 该用户已被删除
5#
发表于 2015-2-9 22:27:06 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
简单生活 该用户已被删除
6#
发表于 2015-2-28 02:11:28 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
变相怪杰 该用户已被删除
7#
发表于 2015-3-9 18:46:00 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
山那边是海 该用户已被删除
8#
发表于 2015-3-17 00:36:34 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
乐观 该用户已被删除
9#
发表于 2015-3-23 10:42:37 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-22 07:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表