• ASP.NET基于Web Mail收发系统设计与开发


    摘  要

    互联网络技术的不断发展,电子邮件服务已经成为人们基本的信息交互手段,也是网络服务中最早和最基本的服务之一。传统邮件系统大多是基于C/S结构,如Lotus notes、Microsoft Exchange Server等,这些邮件系统占用相对较多的服务器资源,对服务器性能有更高的要求,同时也增加了管理负担。并且,由于不同服务器需要特定的客户端软件,增加了系统的开发和管理成本。

    基于Web的邮件服务提供了更快捷、高效的服务,使得新一代的Web Mail能解决传统邮件的不足之处。本文设计并实现的邮件收发系统基于B/S模式,以组件技术为基础,利用System.Web.Mail命名空间构造函数,分别调用Mailmessage,Mailattachment和SMTPmail方法,实现以Web网页的形式收发电子邮件,用户只需要通过Web页面就可以实现带附件邮件的发送。

    关键词: Web Mail;ASP;SMTP协议;POP协议

    3.1  System.Web.Mail命名空间介绍

    System.Web.Mail命名空间包含使您可以使用CDO消息组件来构造和发送消息的类。邮件可通过系统的SMTP邮件服务或任意的SMTP服务器来传送。该命令空间包含三个类,如下说明

    类的常用属性、方法说明:

    (1)、MailMessage类的属性:该类提供了多个属性、方法、函数,用以构造电子邮件。其中,常用属性如表

    (2)、MailAttachment类的函数

    该类中的MailAttachment构造函数常与new子句配合来初始化附件类的新实例。可用两种方式进行初始化。1、仅指定文件名;2、同时指定文件名和编码类型。

    (3)、SMTPmail类的属性及方法:该类提供了属性及方法以调用CDO组件的功能来发送电子邮件,其中常用的属性有:1、SMTPserver属性。用于获取或设置发送电子邮件的SMTP中继邮件服务器的名称;若不设置该属性,则使用本地(系统内置,如127.0.0.1)的SMTP服务器的名称。2、send方法。该方法用于发送电子邮件。

    类的常用属性方法说明:(见表1)

    表1 类的常用属性

    MailAttachment

    提供用于构造电子邮件附件的属性和方法

    MailMessage

    提供用于构造电子邮件的属性和方法。

    SMTPMail

    提供用于使用 Windows 2000 的协作数据对象 (CDOSYS) 消息组件来发送消息的属性和方法。

    其中,MailMessage类提供的接口很多,以创建MailObject实例对象为例:如发件人(MailObject.From)、收件人(MailObject.To)、抄送(MailObject.Cc)、暗送(MailObject.Bcc)、邮件主题(MailObject.Subject)、邮件正文(MailObject.Body)等基本要素,也包括如优先级(MailObject.Priority)、邮件格式(MailObject.BodyFormat)、编码类型(MailObject.BodyFormat)等。3.2  程序设计主要步骤

    首先要建立对System.Web.Dll动态连接库的引用。然后,在窗口类之前用以下语句导入命名空间:Import System.Web.Mail,通过初始化构造一个MailMessage()函数定义变量,将接收HTML网页中填入的信息赋值给变量,这样就可以引用其中的成员。

    3.3  界面设计

            1.  首页

    首页设置传值页面,把登录信息中的用户名,密码等传到下一个页面(default.asp),form标签的名称为f1,主要代码如:

    ’设置属性及传值页面

    ’传用户名

    ’传密码

    在首页中加入了判断输入的代码,如if (username.value == "")

    {

    alert("用户名不可为空");

           usernameshow.focus();

                  return ;

    }

    并加入了一些图片,生成的效果如图3

                        图3 登录首页

            2.  发送邮件页面

    发送邮件的页面调用.NET框架中的System.Web.Mail, 此页面的运行需要.NET2.0框架环境,其它代码也是该设计的核心部分,在主要代码部分有详细的说明,详见 3.5发送邮件页面主要代码, 生成页面如图4

                     图4 邮件发送页面

            3.  用户登录后页面

    这是一个框架页面,分为收件箱,草稿箱,发件箱和垃圾箱,每一个部分分别用一个页面来实现,其中最重要的收件箱用listmail.asp来实现,在页面中邮件总数用

    <%

    dim ei

    set ei = server.createobject("easymail. PerFolders")’创建对象并初始化变量

    ‘然后分别定义变量来接收

    用<%= ei.newInBoxMailCount %>来显示组件中收件箱邮件的数量,同理分别用<%=ei.inboxMailCount%>,<%=ei.NewOutBoxMailCount%>,<%=CLng(ei.inboxMailSize/1000) %>来调用组件中收件箱数量,未读邮件数量和邮箱使用率,并对是否为空做判断。

      存储空间的大小用<%=maxsize %>来获取,<%=bf %>用来显示空间使用率,其中bf = CInt((100 * CLng(cursize / 1000)) / maxsize),这里邮件设计为10M

    生成如图5

    图5 登录后

            4.  收件箱

    收件箱页面首先用

    <%

    dim ei

    set ei = server.createobject("easymail.InfoList")’创建对象并定义接收信息列表中内容,用

    ei.LoadMailBox username加载组件中的信息

    收件箱中所有的邮件信息用循环来显示接收,

    <%

    dim forpn

    forpn = ""

    i = 0

    do while i < allnum’循环显示

           ei.getMailInfo allnum - i - 1, idname, isread, priority, sendMail, sendName, subject, size, etime   ’其中allnum为邮件总数,后面的分别从ei中定义的名称,是否阅读,收件人,发件人,主题,大小,时间等。

           forpn = forpn & Chr(9) & idname

           idname = NULL isread = NULL priority = NULL  sendMail = NULL

           sendName = NULL   subject = NULL  size = NULL

           etime = NULL    i = i + 1

    loop %>’循环结束

    如图6

    图6 收件箱

            5.  邮件查看

    在查看邮件页面(showmail.asp)中同样调用组件中

    <%dim ei

    set ei = server.createobject("easymail.emmail")

    %>‘来显示每一邮件的信息

    值得注意的是在显示详细页面的时候,如果没有规定编码格式,可能出现乱码的情况,因此在这里添加一个判断

    charset = UCase(ei.Text_CharSet)

    if charset = "" or charset = "DEFAULT_CHARSET" then

    charset = "gb2312"‘把页面的编码设为gb2312

    日期,优先级,发件人,发件人地址,收件人地址,主题和邮件的详细内容分别调用组件中Time,XMSMailPriority等来实现,具体格式如下:

    <%=ei.Time %>

    邮件优先级判断:

    <%

    xmsp = ei.XMSMailPriority’定义邮件优先级

    if xmsp = "High" then

    Response.Write "紧急邮件"

    elseif xmsp = "Low" then

    Response.Write "慢件"

    else

    Response.Write "普通邮件"

    end if

    %>

    发件人调用:

    <%

    Dim receiver

    receiver = server.htmlencode(ei.FromMail)‘调用发件人

    response.write receiver%>

     <%

    receiver = server.htmlencode(ei.Receiver)‘调用收件人

     response.write receiver%>‘定义变量接收收件人变量

    <%=server.htmlencode(ei.subject) %>‘调用主题

    <%=server.htmlencode(ei.text) %>‘调用邮件内容

    如图7

    图7 邮件查看

    3.4  主要代码

    程序主要页面程序如下:

    1. 邮件发送页面:

    <%@ Page Language="VB" Debug="true" %>

    <%@ Import Namespace="System.Web.Mail" %>

    ’发送脚本部分完

    ‘html定义变量

    OnClick="SendMail" />    ‘点击处理事件

    ’判断是否发送成功

    邮件已经成功发送,欢迎您使用!

    2、邮件收件箱主要代码:

    随机数产生函数:(作用是产生随机数,在注册时产生验证)

    function getGRSN()’定义

        dim theGRSN

           Randomize

           theGRSN = Int((9999999 * Rnd) + 1)’让99999999乘以随机数rnd的和加1并取整

        getGRSN = "GRSN=" & CStr(theGRSN)

    end function

    定义邮箱空间使用率:

    dim bf

    if maxsize > 0 then

           bf = CInt((100 * CLng(cursize / 1000)) / maxsize)

    else

           bf = 100

    end if

    列表:set ei = server.createobject("easymail.InfoList")

    显示邮件主要函数:set ei = server.createobject("easymail.emmail")

  • 相关阅读:
    PTA_乙级_1016
    Springboot美得商城的设计与实现860t0计算机毕业设计-课程设计-期末作业-毕设程序代做
    「Cpolar」内网穿透实现在外远程连接MongoDB数据库【端口映射】
    IntersectionObserver实现滚动加载
    Flume学习笔记(4)—— Flume数据流监控
    10款远程办公软件,助你事半功倍,晋升快如闪电
    CAN 通信原理学习
    全光网络技术发展与演进
    基于微前端qiankun的多页签缓存方案实践
    Mybatis查询功能总汇
  • 原文地址:https://blog.csdn.net/shmp54xmu/article/details/137889360