|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊! |
|