【聚杰网Asp.Net】用ASP.NET设计高效邮件列表微软开发专栏ASP.NET
一、邮件列表作用和工作方式
邮件列表是什么呢?邮件列表就是网站或者机构为了及时通知信息给相关用户,将这些用户的电子邮件保存并且在有信息需要发送的时候将信息分别发送给所有用户。表面上,邮件列表和发送电子邮件的时候使用的“附送”“密送”差不多,基本没什么差别,其实,它们还是有差别的:
(1)邮件列表具有明确的发行目的,发送邮件列表就是为了发送特定信息给特定用户;
(2)邮件列表接受人不能取得其他接受人的资料,这一点是邮件列表和电子邮件附送的最大区别。
我们知道,当我们收到一些电子邮件的时候,发现在邮件的“附送”栏有很多其他用户的邮件地址,这就是通过“附送”方式将邮件发送给一系列用户;而通过邮件列表发送的邮件,用户感觉就是发送人单独发送给用户的,不能看见其他用户的信息,当然,实质也是这样发送的。这样,我们就可以知道邮件列表的工作方式其实是将每个用户的电子邮件取出,然后逐个发送相同的信息。
邮件列表既然是单独逐个发送信息,那么,肯定我们不能通过手工一个个发送,只能通过软件来发送。现在,邮件列表的发送以下几种方式,一是通过专门的邮件群发软件来实现,这些软件将所有电子邮件地址读入,然后逐个发送,这些软件的优点是可以针对具体用户改变邮件主题信息或者发送人邮箱;缺点是往往这些软件需要注册费用;二是通过专门的邮件列表服务提供网站实现,这些网站通过程序帮助邮件列表发行者将信息发送给订阅者,这是个人用户使用最多的一种方式,这种方式的优点是简单、免费,缺点是往往这些服务提供网站性能不是很稳定,邮件延迟情况时常发生;三是通过自己的网站设计一个邮件列表程序,自己管理,这样的优点是发送信息高效、管理方便,缺点是技术实现稍微优点困难,不是很适合一般用户。我们在这里就介绍通过ASP.NET编程实现一个功能完备的邮件列表。
二、邮件列表的设计
在设计之前我们必须知道一点,邮件列表的所有电子邮件地址必须保存成为一个文件,这里,我们将所有电子邮件地址保存在Access数据库中,这样可以很方便的对邮件地址进行增加、修改、删除等操作。在这里,我们的数据库名为mail.mdb,位于data目录下。数据表名为mail,只有一个字段“mail”,用于保存电子邮件地址。
作为一个长期的网站功能,我们当然要求没发送以此邮件都必须有详细的发送记录和每个邮件的发送情况。这里,我们在程序中会自动在log目录使用发送邮件的主题为文件名生产一个HTML格式的Log日志文件。
现在,我们已经基本了解了程序的功能和文件结构,我们来看程序代码:
程序运行界面如下(图一):
在以上的程序中,我们将一些比较常见的功能设置成为函数,在主体程序中直接调用这些函数,这样,程序看起来比较简洁,修改也很简单。在这里,我们简单介绍一下这些函数,一是连接数据库的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就可以,随意,我们最好不要随意发送。
三、总结
以上我们用一个具体的实例介绍了完整邮件列表的设计,该程序完全根据实际需要设计,具有较大的实用性。在程序实现中,我们同时使用了数据库、邮件和文件操作,涉及内容较多,有兴趣的朋友可以根据自己的实际要求适当修改,使程序功能更加全面。






