maillist

 一个吸引人的、功能完备的网站往往具有以下特征:一是内容充实、实用,吸引对该类内容干兴趣的浏览者;二是页面设置合理,页面设计精美;三是网站互动性强,用户和网站或者用户与用户之间交流方便高效;四是网站内容更新及时并且可以第一时间通知用户。以上这些特点可能对于一些大型的门户网站而言,不是特别适合,因为门户网站的特点,用户流量往往不是内容的区别而是用户习惯、历史原因和地域区别(比如广东地区的浏览者喜欢网易、北京的喜欢新浪)。而对于一般个人网站或者企业网站而言,以上特点就显得特别重要,因为这类网站内容更新不是很快,浏览者来这些网站往往具有特定目的性(比如寻找特定领域的资料或者产品信息),当网站内容吸引到用户以后,网站的更新信息或者网站最新新闻就有必要及时通知浏览者,以此来紧紧抓住浏览者,培养浏览者的“浏览忠诚度”。这就是网站邮件列表的作用。
  
  一、邮件列表作用和工作方式
  邮件列表是什么呢?邮件列表就是网站或者机构为了及时通知信息给相关用户,将这些用户的电子邮件保存并且在有信息需要发送的时候将信息分别发送给所有用户。表面上,邮件列表和发送电子邮件的时候使用的“附送”“密送”差不多,基本没什么差别,其实,它们还是有差别的:(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>
posted @ 2007-12-24 13:15  hq5460  阅读(221)  评论(0编辑  收藏  举报