`
yiyeqinghuasoon
  • 浏览: 644636 次
文章分类
社区版块
存档分类
最新评论

用ASP.NET设计高效邮件列表

 
阅读更多

出处:动态网站制作指南 作者:动态网站制作指南 时间:2006-3-20 12:40:00

一个吸引人的、功能完备的网站往往具有以下特征:一是内容充实、实用,吸引对该类内容干兴趣的浏览者;二是页面设置合理,页面设计精美;三是网站互动性强,用户和网站或者用户与用户之间交流方便高效;四是网站内容更新及时并且可以第一时间通知用户。以上这些特点可能对于一些大型的门户网站而言,不是特别适合,因为门户网站的特点,用户流量往往不是内容的区别而是用户习惯、历史原因和地域区别(比如广东地区的浏览者喜欢网易、北京的喜欢新浪)。而对于一般个人网站或者企业网站而言,以上特点就显得特别重要,因为这类网站内容更新不是很快,浏览者来这些网站往往具有特定目的性(比如寻找特定领域的资料或者产品信息),当网站内容吸引到用户以后,网站的更新信息或者网站最新新闻就有必要及时通知浏览者,以此来紧紧抓住浏览者,培养浏览者的“浏览忠诚度”。这就是网站邮件列表的作用。


一、邮件列表作用和工作方式
邮件列表是什么呢?邮件列表就是网站或者机构为了及时通知信息给相关用户,将这些用户的电子邮件保存并且在有信息需要发送的时候将信息分别发送给所有用户。表面上,邮件列表和发送电子邮件的时候使用的“附送”“密送”差不多,基本没什么差别,其实,它们还是有差别的:
(1)邮件列表具有明确的发行目的,发送邮件列表就是为了发送特定信息给特定用户;
(2)邮件列表接受人不能取得其他接受人的资料,这一点是邮件列表和电子邮件附送的最大区别。
我们知道,当我们收到一些电子邮件的时候,发现在邮件的“附送”栏有很多其他用户的邮件地址,这就是通过“附送”方式将邮件发送给一系列用户;而通过邮件列表发送的邮件,用户感觉就是发送人单独发送给用户的,不能看见其他用户的信息,当然,实质也是这样发送的。这样,我们就可以知道邮件列表的工作方式其实是将每个用户的电子邮件取出,然后逐个发送相同的信息。
邮件列表既然是单独逐个发送信息,那么,肯定我们不能通过手工一个个发送,只能通过软件来发送。现在,邮件列表的发送以下几种方式,一是通过专门的邮件群发软件来实现,这些软件将所有电子邮件地址读入,然后逐个发送,这些软件的优点是可以针对具体用户改变邮件主题信息或者发送人邮箱;缺点是往往这些软件需要注册费用;二是通过专门的邮件列表服务提供网站实现,这些网站通过程序帮助邮件列表发行者将信息发送给订阅者,这是个人用户使用最多的一种方式,这种方式的优点是简单、免费,缺点是往往这些服务提供网站性能不是很稳定,邮件延迟情况时常发生;三是通过自己的网站设计一个邮件列表程序,自己管理,这样的优点是发送信息高效、管理方便,缺点是技术实现稍微优点困难,不是很适合一般用户。我们在这里就介绍通过ASP.NET编程实现一个功能完备的邮件列表。


二、邮件列表的设计
在设计之前我们必须知道一点,邮件列表的所有电子邮件地址必须保存成为一个文件,这里,我们将所有电子邮件地址保存在Access数据库中,这样可以很方便的对邮件地址进行增加、修改、删除等操作。在这里,我们的数据库名为mail.mdb,位于data目录下。数据表名为mail,只有一个字段“mail”,用于保存电子邮件地址。
作为一个长期的网站功能,我们当然要求没发送以此邮件都必须有详细的发送记录和每个邮件的发送情况。这里,我们在程序中会自动在log目录使用发送邮件的主题为文件名生产一个HTML格式的Log日志文件。
现在,我们已经基本了解了程序的功能和文件结构,我们来看程序代码:
<%@ Page Language="VB" Debug="True" Explicit="True"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Web.Mail" %>
<%@ Import Namespace="System.IO" %>
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>邮件列表</title>
<style>
<!--
a:link{color:#0066FF;text-decoration:none;font-size:"9 pt"}
a:visited{color:#000066;text-decoration:none;font-size:"9 pt"}
a:actived{color:#FF0000;font-size:"9 pt"}
a:hover{color:#FF0000;font-size:"9 pt"}
table{font-size:"11 pt"}
-->
</style>
</head>
<body>
<SCRIPT language=VB RUNAT="server">
Sub SendMail(Obj As Object, E As EventArgs)
lbmsg.Text=""
Dim mailObj AS new MailMessage
Dim smtp AS new SmtpMail
'定义SMTP服务器的名称
Smtp.smtpserver="127.0.0.1"
'定义邮件的发送地址
mailObj.From=sendmailbox.value
'定义邮件的接收地址
Dim conn AS OleDbConnection
conn=connectdb("data/mail.mdb")
conn.open()
Dim reader As oledbdatareader
reader=readdb(conn,"select * from mail")
while (reader.read())
try
mailObj.To=reader("mail")
mailObj.Subject =subject.value
mailObj.Body =content.value
'默认发送邮件格式为纯文本TEXT,如果选择HTML格式,设置为HTML格式
if mode.value="HTML" then
mailObj.BodyFormat=MailFormat.Html
end if
'设置邮件发送级别为高
mailObj.Priority = MailPriority.High
Smtp.Send(mailObj)
lbmsg.text=lbmsg.text+reader("mail")+"OK!Time:"+Now().ToString()+"<br>"
catch er as Exception
lbmsg.text=lbmsg.text+er.message+"<br>"
finally
End Try
End While
reader.close()
Dim strwriterobj As StreamWriter
try
strwriterobj= File.CreateText(Server.MapPath("log/")+subject.value+".htm")
strwriterobj.Write("<HTML><head><meta http-equiv='Content-Language' content='zh-cn'><meta http-equiv='Content-Type' content='text/html; charset=gb2312'></head><BODY>"+lbmsg.text+"</BODY></HTML>")
catch er as Exception
lbmsg.text=lbmsg.text+er.message+"<br>"
finally
strwriterobj.close
lbmsg.text=lbmsg.text+"日志保存成功!保存目录:<br>"+Server.MapPath("log/")+subject.value+".htm"
End Try
End Sub
'链接数据库
'www.knowsky.com
Function ConnectDB(txtdatabase AS String) As Oledbconnection
Dim conn AS OledbConnection
Dim connstr As String
connstr="Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source=" +Server.MapPath(txtdatabase)
connectdb=New OledbConnection(connstr)
End Function
'读取一条记录
Function readdb(conn As Oledbconnection,txtsql As String) As OledbDataReader
Dim cmd As OledbCommand
cmd=new oledbcommand(txtsql,conn)
readdb=cmd.executereader()
End Function
</SCRIPT>
<p align="center"><font size="5" face="楷体_GB2312">邮件列表</font></p>
<hr width="60%" size="1">
<div align="center">
<center>
<table border="0" width="770">
<tr>
<td width="100%">
<form method="POST" runat="Server">
<table border="0" width="100%" height="125">
<tr>
<td width="15%" align="right" height="24"> 发送邮箱: </td>
<td width="85%" height="24"><input type="text" name="sendmailbox" id="sendmailbox" size="50" runat="Server"/></td>
</tr>
<tr>
<td width="15%" align="right" height="24"> 标题: </td>
<td width="85%" height="24"><input type="text" name="subject" id="subject" size="50" runat="Server"/></td>
</tr>
<tr>
<td width="15%" align="right" height="60">内容:</td>
<td width="85%" height="60"><textarea rows="6" name="content" cols="80" id="content" runat="Server"/></textarea></td>
</tr>
<tr>
<td width="15%" align="right" height="23">方式:</td>
<td width="85%" height="23"><select size="1" name="mode" id="mode" runat="Server">
<option value="Text" selected>Text</option>
<option value="HTML">HTML</option>
</select></td>
</tr>
</table>
<p align="center"><input type="button" value=" 提 交 " name="ok" onserverclick="sendmail" runat="Server"/></p>
</form>
<ASP:Label id="lbmsg" runat="Server"/>
<p>
</td>
</tr>
<tr>
<td width="100%"></td>
</tr>
</table>
</center>
</div>
</body>
</html>

程序运行界面如下(图一):

在以上的程序中,我们将一些比较常见的功能设置成为函数,在主体程序中直接调用这些函数,这样,程序看起来比较简洁,修改也很简单。在这里,我们简单介绍一下这些函数,一是连接数据库的ConnectDB(txtdatabase AS String),这个函数使用Access数据库的相对位置作为函数参数,返回数据库连接OleDbConnection;函数readdb(conn As Oledbconnection,txtsql As String)可以直接执行一条SQL语句,返回OledbDataReader。在程序中,我们将每一个邮件发送的结果保存并且最好生成一个HTML格式的日志文件。因为程序中我们用到了数据库、电子邮件和文件操作,以此,在引入名字空间的时候,我们需要将“System.Data.OleDb”、“System.Web.Mail”和“System.IO”引入。
在使用以上邮件列表程序的时候,我们需要注意几个问题,第一是Smtp服务器的设置,我们知道,Smtp服务器是邮件发送服务器,而现在一些免费邮件提供商是不再提供针对所有邮件提供Smtp服务,在发送邮件的时候,需要验证用户信息,而我们看到,在以上的程序中甚至整个ASP.NET的邮件部分,根本没有考虑Smtp用户验证问题,以此,我们不能随便使用一个Smtp服务器,而必须使用完全免费的Smtp服务器,这样的服务器现在已经很少了。所以,如果有条件,最好我们自己设置计算机为Smtp服务器,怎样实现,我们可以下载EasyMail等软件。第二是邮件发送速度问题,如果Smtp服务器在本地计算机,发送速度很快的,基本上不用担心,如果不是本地服务器,那么发送的时候最好不要以此太多,一是速度问题,二是以此发送太多邮件,Smtp服务器可能认为是垃圾邮件而拒绝服务,这一点我们可以自己试验;第三是邮件发送发送人的设定问题,通过这个程序或者说通过使用ASP.NET的邮件功能,我们完全可以在邮件发送人随意写,这样,很容易别有用心的人就可以通过这个功能来发送垃圾邮件,当然,这些邮件追查来源很简单,直接查IP就可以,随意,我们最好不要随意发送。


三、总结
以上我们用一个具体的实例介绍了完整邮件列表的设计,该程序完全根据实际需要设计,具有较大的实用性。在程序实现中,我们同时使用了数据库、邮件和文件操作,涉及内容较多,有兴趣的朋友可以根据自己的实际要求适当修改,使程序功能更加全面。

分享到:
评论

相关推荐

    ASP.NET邮件收发程序的设计与开发.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    ASP.NET网络数据库开发实例精解.part1

    ch11\Example_11_1~ Example_11_18 ---- 第11章中的ASP.NET网络数据库开发,如上传文件和下载文件、读、写和删除文件、同时上传多个文件、发送邮件、处理数据库中图片、使用ASP.NET创建任意图形等; ch12\Example_12...

    ASP.NET邮件收发程序的设计与开发(源代码+thesis).zip

    ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加...

    ASP.NET在线毕业提交系统的设计与实现.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    ASP.NET在线二手交易系统的设计与实现.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    asp.net中图像的检索技术毕业设计源码.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    ASP.NET中小企业OA系统的设计与实现.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    ASP.NET基于cs的电子邮件简单收发系统设计与实现(源代码+thesis).zip

    ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加...

    ASP.NET在线英语自学系统——课程及自测管理的设计.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    ASP.NET智能评教系统.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    Asp.net在线考勤系统研发.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    asp.net仪器设备管理与实现.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    asp.net银行大厅自助信息系统的开发与实现.zip

    ASP.NET邮件收发程序的设计与开发.zip: 这个项目是一个ASP.NET编写的邮件收发程序,用于帮助用户进行邮件的收发和管理。系统具有注册、登录、发送、接收、删除邮件等功能。用户可以通过系统进行邮件的发送和接收,...

    ASP.NET团购网源码

    本系统基于ASP.NET C#和SQLSERVER2000数据库开发技术架构。 功能介绍: 1.一般团购发布 2.秒杀抢团项目 3.品牌商户展示 4.一日多团功能 5.购物车功能 6.虚拟购买人数 7.订单统计功能 8.管理权限分配 9.数据库的备份 ...

    信息办公Asp.net通用OA系统-uds.rar

    Asp.net通用OA系统_uds.rar是一个专为计算机专业人士设计的JSP源码资料包,它提供了一个全面且高效的办公自动化解决方案。这个资料包包含了一套完整的源代码,以及详细的文档和教程,可以帮助开发者快速搭建和部署一...

    ASP.NET网络数据库开发实例精解.part2

    ch11\Example_11_1~ Example_11_18 ---- 第11章中的ASP.NET网络数据库开发,如上传文件和下载文件、读、写和删除文件、同时上传多个文件、发送邮件、处理数据库中图片、使用ASP.NET创建任意图形等; ch12\Example_12...

    计算机专业毕设ASP.NET基于Web Mail收发系统设计与开发(源代码+论文).rar

    计算机专业毕设:基于Web...通过本系统的设计和开发,可以为用户提供一个高效、安全、便捷的邮件收发平台,提高工作效率和信息传递速度。同时,本系统还可以根据实际需求进行二次开发和定制,满足不同场景的特殊需求。

    依据ASP.NET基于Web Mail收发系统设计与开发(毕业设计源代码+论文)

    基于Web的邮件服务提供了更快捷、高效的服务,使得新一代的Web Mail能解决传统邮件的不足之处。本文设计并实现的邮件收发系统基于B/S模式,以组件技术为基础,利用System.Web.Mail命名空间构造函数,分别调用...

    asp.net Forums 0831版

    版主短信群发功能 会员等级制度 会员身分识别 忘记密码邮件提醒功能 发贴安全脚本认证功能 版主易于自定义界面功能 无需ASP.NET Session支持 版主环保箱功能,而非立即的物理删除...

Global site tag (gtag.js) - Google Analytics