Asp开发WAP简易邮件系统实例

原创 2007年10月11日 20:12:00

此稿2007年发表于IT168   链接地址:http://publish.it168.com/2007/0611/20070611009601.shtml

        随着手机用户的不断增加,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。

总结 使用c# 开发邮件系统心得

用c#开发电子邮件快半年了。有必要总结一下了。 1.最开始对邮件系统结构的不熟,导致现在要重新改数据库结构,肯定有很多重复工作要做了。所谓的动手前仔细思考和规划,怎么样做才能取得效果呢?前提应该是对技...
  • jszln1127
  • jszln1127
  • 2008-06-24 09:18:00
  • 1064

使用asp实现支持附件的邮件系统

大家经常探讨使用asp,而不使用其他组建能否实现文件的上传,从而开发出支持邮件附件的邮件系统,答案是可以的。请看: 以下是发送邮件的页面,邮件的帐号是员工号,假设是5位的数字,sendmail.as...
  • tbmqzmavp
  • tbmqzmavp
  • 2014-05-08 19:17:06
  • 414

简单的asp.net模拟邮箱系统基础实现(一 总体功能版块的设计,与简单数据库的设计)

一、设计内容 用ASP.NET技术开发一个模拟邮件系统,界面自定,要求具有如下功能: 1、 首用户能够注册 2、 用户登录后 l 查看用户注册信息 l 可以发信给其它用户 l 查看来信,对来信进行回复...
  • WYR_try
  • WYR_try
  • 2017-03-08 00:22:27
  • 701

php简单的邮件系统

想了很久觉得应该写点什么,最后还是决定写个简单的邮件系统,网上有很多这样的例子,但是直接拿来后是用不了的,不得不自己动手做一个。1、首先是写邮件的php处理文件 mail.inc.php:...
  • zhangyujie_China
  • zhangyujie_China
  • 2016-12-28 20:09:18
  • 2370

手机wap邮件系统

  • 2007年08月07日 17:21
  • 10KB
  • 下载

一套基于C#开发的收发邮件系统完整版源代码

  • 2009年02月20日 12:12
  • 211KB
  • 下载

自己开发的JAVA Web Email邮件系统

  • 2009年09月26日 12:45
  • 67KB
  • 下载

学习asp.net移动开发的一点心得

     小弟在以前的公司是用asp搞wap1.1开发的,后来离开了原来的公司之后转向了新的公司用asp.net2.0开发wap站。     在学习的过程中遇见了一些很困惑的问题,相信新的初学者也可能...
  • koki_wdbxm
  • koki_wdbxm
  • 2007-03-20 22:39:00
  • 1501

基于iis+asp+access后台的简单人事管理系统

  • 2011年12月29日 12:11
  • 458KB
  • 下载

基于asp的办公邮件系统

  • 2012年05月24日 20:55
  • 735KB
  • 下载
收藏助手
不良信息举报
您举报文章:Asp开发WAP简易邮件系统实例
举报原因:
原因补充:

(最多只允许输入30个字)