随着手机用户的不断增加,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属性的值)标记型字符。