随着手机用户的不断增加,WAP站点如雨后春笋迅速的滋长开来,手机邮箱也不断的出现在人的眼前,笔者也曾经开发了一套手机邮箱的系统,但由于时间仓促再加上后来一直忙于工作事情,系统功能也就再未加强,今日有幸借助于IT168原创网公开出来,与大家共同分享,希望大家可以借题发挥,加强系统功能,能够更好的应用于实际。
测试软件:Opera M3gate
测试机型:Eg730+ Nokia 6681 Moto V3i
邮件组件:W3 Jmail 4.4
一、WML结构介绍
首先我们先对WML的结构作个简单的介绍,以便于大家更好的浏览源码。
〈?xml version="1.0"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml"〉
〈wml〉
〈head〉
〈access/〉
〈meta..../〉
〈/head〉
〈card〉
Some contents...
〈/card〉
〈wml〉
我们根据以上结构举个最简单的例子:
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml"〉
〈wml〉
〈card title="邮件系统"〉
〈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
二、JMail组件功能介绍
W3 Jmail是一个smtp组件,利用它可以发送邮件,支持html格式邮件。你可以访问主页:http://tech.dimac.net 下载这个组件。w3 Jmail 发送邮件速度快,功能丰富,并且是免费的。
以下是本系统所要用到的相关函数及属性,如需更详细的资料可以查阅JMail的官方说明。
1、JMAIL.POP3
创建POP3对象
Set pop3 = 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.DeleteSingleMessage 1
Messages() : Pointer
返回Message的集合
set messages = mailbox.Messages
2、JMAIL.MESSAGE
建立Message对象:
set Message=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对象
示例:set msg = Messages.Item(0)
Recipients() : Pointer
返回收件人集合。
示例:Set Recipients = msg.Recipients
Attachments() : Pointer
返回邮件的附件集合。
示例:Set Attachments = msg.Attachments
3、JMail.Recipients
Count() : Integer
返回集合中收件人的总数。
示例:i = Recipients.Count
Item(Index) : Pointer
返回集合中的一个指定的收件人。
示例:set re = Recipients.Item(0)
4、JMail.Attachments
Count():Integer
返回集合中附件的总数。
示例:i = Attachments.Count
三、邮件系统介绍
本邮件系统共包括登陆邮件、发送邮件、接收邮件、删除邮件、回复邮件五个功能,以下我们就对每个功能进行单独介绍,并附出源码,本教程所有图片为M3gate测试中的截图。
1) 登陆邮件
图二 |
从图二中我们可以看出,登陆页面包括一个表单,表单中含有两个文本框与一个发送按钮,那么在WML语言中是如何提交表单的呢?首先我们先看看wml语言中一些表单元素:1、input元素
〈input name="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键后,焦点落在哪个选项上,该值决定了这个选择顺序,数字大的排在后面。目前未被支持。
示例:
〈input type="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时会被浏览器忽略
示例:
〈do type="accept" label="发送" optional="false"〉
{Content}
〈/do〉
3、go元素
用来指示浏览器显示指定的URL,包括DECK的第一个CARD或者指定的CARD。语法如下:
〈go href="url" sendreferer="false|true" method="get|post" accept-charset="charset"〉
〈postfield name="name" value="value"/〉
〈setvar name="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"。
〈postfield name="name" value="value"/〉可以看作是HTML表单FORM中的〈INPUT TYPE="HIDDEN" NAME="变量名" VALUE="值"〉,通过它可以向指定的URL传递以“变量名/值”形式的数据。name和value属性都是必选的。注意只有这里的变量是用来递交给CGI程序的。
除了〈postfield〉,还可以在〈go〉和〈/go〉间加入一句或者多句〈setvar name="name" value="value"/〉,该语句的意思是,当触发某一事件时,给变量赋值。
示例:
〈go href="main.asp" method="post" accept-charset="utf-8"〉
〈postfield name="user" value="$(user)"/〉
〈postfield name="pwd" value="$(pwd)"/〉〈/go〉
〈/do〉
邮件登陆界面源码: Index.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card title="邮箱登陆"〉
〈p align="center"〉
Welcome To Sohu-WAP-Mail〈/p〉
〈p〉
用户名:
〈input type="text" title="用户名" name="user" maxlength="30"/〉
〈br/〉密 码:
〈input type="password" title="密码" name="pwd" maxlength="30"/〉〈br/〉
〈do type="accept" label="发送" optional="false"〉
〈go href="main.asp" method="post" accept-charset="utf-8"〉
〈postfield name="user" value="$(user)"/〉
〈postfield name="pwd" value="$(pwd)"/〉〈/go〉
〈/do〉
〈/p〉
〈/card〉
〈/wml〉
2) 邮件主页面
邮件主页面主要功能为验证登陆页面传过来的用户名与密码是否正确,如果正确则显示相关的邮件操作链接(如图四),反之则提示密码错误要求重新输入(如图三)。由于某些移动设备不支持跳转,程序尽量避免使用跳转语句。
图三 (登陆失败) 图四(登陆成功) |
邮件主页面源代码: main.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="Sohu-PALM-MAIL平台"〉
〈p〉
〈%
on error resume next
user=request("user")
pwd=request("pwd")
Set pop3 = Server.CreateObject( "JMail.POP3" )
pop3.connect user,pwd,"http://pop3.sohu.com"
pop3.Disconnect
if err.number〈〉0 then
response.write("登陆错误,请检查用户名密码是否正确!〈br/〉")
response.write("〈a href='index.asp'〉重新登陆〈/a〉〈/p〉〈/card〉〈/wml〉")
response.End()
end if
response.write("欢迎你"&user&"@sohu.com〈br/〉")
%〉
〈a href="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉〈br/〉
〈a href="send.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉发件箱〈/a〉〈br/〉
〈a href="index.asp"〉重新登陆〈/a〉〈br/〉
〈/p〉
〈/card〉
〈/wml〉
注:
〈a href="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉
由于某些移动设备并不支持session,为了更好的应用,故采用url参数传递,遗憾的是这样做安全性不高,为了提高安全性,建议对参数进行明文加密后再进行传递,在接收页面在做相对应的解密处理,当然如果你有什么更好的办法,还请发邮件指出,谢谢。
3) 发送邮件
图五 |
发送邮件功能的实现主要采用了Jmail.Message对象完成,关于所要用到的对象相关知识在前面已经叙述过了,大家可以将上面的功能介绍与源码对照起来阅读,这样有助于理解整个邮件发送过程,当然如果将WM元素换为HTMLF元素,这样一个简单的WEB邮件发送功能也就完成了,send.asp为邮件发送页面 sendok.asp为邮件发送处理页面
Send.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="发件箱"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
%〉
收件人:
〈input type="text" title="收件人" name="tomail" size="12" maxlength="50"/〉〈br/〉
标题:
〈input type="text" title="标题" name="subject" size="12" maxlength="50"/〉
〈br/〉内容:
〈input type="text" title="内容" name="body" size="12" maxlength="250"/〉〈br/〉
〈do type="accept" label="发送" optional="false"〉
〈go href="sendok.asp?user=〈%=user%〉&pwd=〈%=pwd%〉" method="post" accept-charset="utf-8"〉
〈postfield name="from" value="$(from)"/〉
〈postfield name="tomail" value="$(tomail)"/〉
〈postfield name="subject" value="$(subject)"/〉
〈postfield name="body" value="$(body)"/〉〈/go〉
〈/do〉
〈/p〉
〈p〉
〈a href="main.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉返回邮箱〈/a〉〈/p〉
〈/card〉
〈/wml〉
Sendok.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="发送邮件"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
tomail=request("tomail")
'from=request.form("from")
subject=request.form("subject")
body=request.form("body")
servermail=user+"@sohu.com"
dim JMail
set JMail=server.CreateObject("Jmail.message")
JMail.Silent=true
JMail.Charset = "gb2312"
JMail.from =""&ServerMail&"" '为发件人
JMail.AddRecipient tomail
JMail.Subject =""&subject&""
jmail.Body=""&body&"----------你当前使用的众赢掌中邮系统,详情请访问:http://www.palmmail.cn邮通天下 一触即发!----------"
JMail.MailServerUserName =user
JMail.MailServerPassWord = pwd
JMail.MailDomain = "www.sohu.com"
JMail.Priority=2
sendok=JMail.send("smtp.sohu.com")
Set JMail=nothing
if sendok then
response.write "发送成功!〈a href='main.asp?user="&user&"&pwd="&pwd&"'〉返回邮箱〈/a〉"
else
response.write "发送失败!〈a href='send.asp?user="&user&"&pwd="&pwd&"'〉返回邮箱〈/a〉"
end if
%〉
〈/p〉
〈/card〉
〈/wml〉
4) 接收邮件
图六 |
接收邮件主要由两部分组成,第一部分为邮件列表,根据所获得的邮件总数(pop3.count)进行分页显示。第二部分为每封信的具体内容,其中包括对附件进行检测功能,由于手机浏览时并不能打开附件,因此本系统只对附件作了检测并提醒用户邮件是否包含邮件功能。
源码如下:
邮件列表:email_list.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="收件箱"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
dim perpage_num,curpage,totalpage
perpage_num=3 '设每页显示条数
if request("page")="" then
curpage=1 '当前页
else
curpage=int(request("page"))
end if
Set pop3 = Server.CreateObject( "JMail.POP3" )
pop3.connect user,pwd,"http://pop3.sohu.com"
' POP3的连接用户名,密码,POP3地址
if pop3.count mod perpage_num〈〉0 then
totalpage=int(pop3.count / perpage_num)+1
else
totalpage=int(pop3.count / perpage_num)
end if
Response.Write( "你现在有" & pop3.count & " 封邮件。分"&totalpage&"页,当前"&curpage&"页〈br/〉---------------------〈br/〉" )
if pop3.count 〉 0 then '如果没有邮件则显示无邮件
if pop3.count〉=perpage_num*curpage then
for i=(curpage-1)*perpage_num to curpage*perpage_num-1%〉
〈a href="email_info.asp?id=〈%=i+1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉&page=〈%=curpage%〉"〉〈%=pop3.messages.item(i+1).Subject%〉--〈%=pop3.messages.item(i+1).date%〉〈/a〉〈br/〉
〈%next
%〉
〈%if curpage〉1 then%〉
〈a href="email_list.asp?page=〈%=curpage-1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉"〉上一页〈/a〉
〈%end if%〉
〈%if int(curpage)〈int(totalpage) then%〉
〈a href="email_list.asp?page=〈%=curpage+1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉"〉下一页〈/a〉
〈%end if%〉
〈%
else
for i=(curpage-1)*perpage_num to pop3.count-1%〉
〈a href="email_info.asp?id=〈%=i+1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉&page=〈%=curpage%〉"〉〈%=pop3.messages.item(i+1).Subject%〉--〈%=pop3.messages.item(i+1).date%〉〈/a〉〈br/〉
〈%next%〉
〈%if curpage〉1 then%〉
〈a href="email_list.asp?page=〈%=curpage-1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉"〉上一页〈/a〉
〈%end if%〉
〈%if int(curpage)〈int(totalpage) then%〉
〈a href="email_list.asp?page=〈%=curpage+1%〉&user=〈%=user%〉&pwd=〈%=pwd%〉"〉下一页〈/a〉
〈%end if%〉
〈%
end if
else
response.write("暂无邮件!")
end if
pop3.Disconnect
%〉
〈/p〉
〈p〉
〈a href="main.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉返回邮箱〈/a〉
〈/p〉
〈/card〉
〈/wml〉
邮件详细信息:email_info.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="查看邮件"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
id=request("id")
page=request("page")
Set pop3 = Server.CreateObject( "JMail.POP3" )
' POP3的连接用户名,密码,POP3地址
pop3.connect user,pwd,"http://pop3.sohu.com"
Set msg = pop3.Messages.item(id)
ReTo = ""
ReCC = ""
Set Recipients = msg.Recipients
separator = ", "
For i = 0 To Recipients.Count - 1
If i = Recipients.Count - 1 Then
separator = ""
End If
Set re = Recipients.item(i)
If re.ReType = 0 Then
ReTo = ReTo & re.Name & re.EMail & separator
else
ReCC = ReTo & re.Name & re.EMail & separator
End If
Next
body=msg.body
body=replace(body,"〈","")
body=replace(body,"〉","")
Set Attachments = msg.Attachments
%〉
〈a href="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&page=〈%=page%〉"〉返回上一页〈/a〉 〈a href="reply.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&mailto=〈%=msg.From%〉"〉回复〈/a〉 〈a href="email_del.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&id=〈%=id%〉"〉删除〈/a〉
〈/p〉
〈p〉
发件人:〈%= msg.FromName %〉--〈%=msg.date%〉〈br/〉
标题:〈%= msg.Subject %〉〈br/〉
内容:〈%= body %〉〈br/〉
〈%
if Attachments.Count〉0 then
response.Write("信件中包含附件,请通过网络查收!")
end if
pop3.Disconnect
%〉
〈/p〉
〈p〉
〈a href="email_list.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&page=〈%=page%〉"〉返回上一页〈/a〉 〈a href="reply.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&mailto=〈%=msg.From%〉"〉回复〈/a〉 〈a href="email_del.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&id=〈%=id%〉"〉删除〈/a〉
〈/p〉
〈/card〉
〈/wml〉
5) 删除邮件
本功能与邮件回复功能一样,为邮件查看页面的一个子功能,通过MessageID传递实现删除邮件。
源码:email_del.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="删除成功"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
id=request("id")
Set pop3 = Server.CreateObject( "JMail.POP3" )
' POP3的连接用户名,密码,POP3地址
pop3.connect user,pwd,"http://pop3.sohu.com"
pop3.deletesinglemessage id
pop3.Disconnect
Set JMail=nothing
response.write delok&"删除成功!〈a href='email_list.asp?user="&user&"&pwd="&pwd&"'〉返回收件箱〈/a〉"
%〉
〈/p〉
〈/card〉
〈/wml〉
6) 回复邮件
回复邮件基本与发送邮件相同,只是将发送人由原来的手工输入改成通过URL参数传递,当然也可以将邮件主体内容传递到回复邮件的主体中,但由于当今手机上网基本采用流量收费的方式,为了减少流量就省去了这些功能,具体代码如下:
Reply.asp
〈% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="发件箱"〉
〈p〉
〈%
user=request("user")
pwd=request("pwd")
tomail=request("mailto")
%〉
收件人:
〈%=tomail%〉〈br/〉
标题:
〈input type="text" title="标题" name="subject" size="8" maxlength="50"/〉
〈br/〉内容:
〈input type="text" title="内容" name="body" size="8" maxlength="250"/〉〈br/〉
〈do type="accept" label="发送" optional="false"〉
〈go href="sendok.asp?user=〈%=user%〉&pwd=〈%=pwd%〉&tomail=〈%=tomail%〉" method="post" accept-charset="utf-8"〉
〈postfield name="subject" value="$(subject)"/〉
〈postfield name="body" value="$(body)"/〉〈/go〉
〈/do〉
〈/p〉
〈p〉
〈a href="email_list.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉返回收件箱〈/a〉〈br/〉
〈a href="main.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉返回邮箱〈/a〉〈/p〉
〈/card〉
〈/wml〉
虽然这套系统可以实现邮件的发送、接收、回复、删除等功能,但是很多方面都是非常欠缺的,比如接收邮件时不能够显示出未读邮件,邮件不能够按照发送邮件的先后顺序排序等等,希望大家有兴趣帮忙多多完善,有什么好的想法好的建议多与我交流,欢迎来信sn1985boy@sohu.com。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |