成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET郵件列表設計及實現淺析

開發 后端
本文主要用一個具體的實例介紹了ASP.NET郵件列表作用和工作方式 、郵件列表的設計兩大特性。

一個吸引人的、功能完備的網站往往具有以下特征:一是內容充實、實用,吸引對該類內容干興趣的瀏覽者;二是頁面設置合理,頁面設計精美;三是網站互動性強,用戶和網站或者用戶與用戶之間交流方便高效;四是網站內容更新及時并且可以第一時間通知用戶。以上這些特點可能對于一些大型的門戶網站而言,不是特別適合,因為門戶網站的特點,用戶流量往往不是內容的區別而是用戶習慣、歷史原因和地域區別(比如廣東地區的瀏覽者喜歡網易、北京的喜歡新浪)。而對于一般個人網站或者企業網站而言,以上特點就顯得特別重要,因為這類網站內容更新不是很快,瀏覽者來這些網站往往具有特定目的性(比如尋找特定領域的資料或者產品信息),當網站內容吸引到用戶以后,網站的更新信息或者網站最新新聞就有必要及時通知瀏覽者,以此來緊緊抓住瀏覽者,培養瀏覽者的“瀏覽忠誠度”。這就是網站郵件列表的作用。

一、ASP.NET郵件列表作用和工作方式

郵件列表是什么呢?郵件列表就是網站或者機構為了及時通知信息給相關用戶,將這些用戶的電子郵件保存并且在有信息需要發送的時候將信息分別發送給所有用戶。表面上,郵件列表和發送電子郵件的時候使用的“附送”“密送”差不多,基本沒什么差別,其實,它們還是有差別的:

(1)郵件列表具有明確的發行目的,發送郵件列表就是為了發送特定信息給特定用戶;

(2)郵件列表接受人不能取得其他接受人的資料,這一點是郵件列表和電子郵件附送的最大區別。

我們知道,當我們收到一些電子郵件的時候,發現在郵件的“附送”欄有很多其他用戶的郵件地址,這就是通過“附送”方式將郵件發送給一系列用戶;而通過郵件列表發送的郵件,用戶感覺就是發送人單獨發送給用戶的,不能看見其他用戶的信息,當然,實質也是這樣發送的。這樣,我們就可以知道郵件列表的工作方式其實是將每個用戶的電子郵件取出,然后逐個發送相同的信息。

郵件列表既然是單獨逐個發送信息,那么,肯定我們不能通過手工一個個發送,只能通過軟件來發送。現在,郵件列表的發送以下幾種方式,一是通過專門的郵件群發軟件來實現,這些軟件將所有電子郵件地址讀入,然后逐個發送,這些軟件的優點是可以針對具體用戶改變郵件主題信息或者發送人郵箱;缺點是往往這些軟件需要注冊費用;二是通過專門的郵件列表服務提供網站實現,這些網站通過程序幫助郵件列表發行者將信息發送給訂閱者,這是個人用戶使用最多的一種方式,這種方式的優點是簡單、免費,缺點是往往這些服務提供網站性能不是很穩定,郵件延遲情況時常發生;三是通過自己的網站設計一個郵件列表程序,自己管理,這樣的優點是發送信息高效、管理方便,缺點是技術實現稍微優點困難,不是很適合一般用戶。我們在這里就介紹通過ASP.NET編程實現一個功能完備的郵件列表。

二、ASP.NET郵件列表的設計

在設計之前我們必須知道一點,郵件列表的所有電子郵件地址必須保存成為一個文件,這里,我們將所有電子郵件地址保存在Access數據庫中,這樣可以很方便的對郵件地址進行增加、修改、刪除等操作。在這里,我們的數據庫名為mail.mdb,位于data目錄下。數據表名為mail,只有一個字段“mail”,用于保存電子郵件地址。

作為一個長期的網站功能,我們當然要求沒發送以此郵件都必須有詳細的發送記錄和每個郵件的發送情況。這里,我們在程序中會自動在log目錄使用發送郵件的主題為文件名生產一個HTML格式的Log日志文件。
現在,我們已經基本了解了程序的功能和文件結構,我們來看程序代碼:

 

  1. 〈 %@ Page Language="VB" Debug="True"   
  2. Explicit="True"% 〉   
  3. 〈 %@ Import Namespace="System.Data" % 〉   
  4. 〈 %@ Import Namespace="System.Data.OleDb" % 〉   
  5. 〈 %@ Import Namespace="System.Web.Mail" % 〉   
  6. 〈 %@ Import Namespace="System.IO" % 〉   
  7.  
  8. 〈 html 〉   
  9. 〈 head 〉   
  10. 〈 meta http-equiv="Content-Language"   
  11. content="zh-cn" 〉   
  12. 〈 meta http-equiv="Content-Type"   
  13. content="text/html; charset=gb2312" 〉   
  14. 〈 title 〉郵件列表〈 /title 〉   
  15.  
  16. 〈 style 〉   
  17. 〈 !--   
  18. a:link{color:#0066FF;text-decoration:none;  
  19. font-size:"9 pt"}   
  20. a:visited{color:#000066;text-decoration:none;  
  21. font-size:"9 pt"}   
  22. a:actived{color:#FF0000;font-size:"9 pt"}   
  23. a:hover{color:#FF0000;font-size:"9 pt"}   
  24. table{font-size:"11 pt"}   
  25. -- 〉   
  26. 〈 /style 〉   
  27. 〈 /head 〉   
  28. 〈 body 〉   
  29. 〈 SCRIPT language=VB RUNAT="server" 〉   
  30. Sub SendMail(Obj As Object, E As EventArgs)   
  31. lbmsg.Text=""   
  32.  
  33. Dim mailObj AS new MailMessage   
  34. Dim smtp AS new SmtpMail   
  35. '定義SMTP服務器的名稱   
  36. Smtp.smtpserver="127.0.0.1"   
  37. '定義郵件的發送地址   
  38. mailObj.From=sendmailbox.value   
  39. '定義郵件的接收地址   
  40. Dim conn AS OleDbConnection   
  41. conn=connectdb("data\mail.mdb")   
  42. conn.open()   
  43. Dim reader As oledbdatareader   
  44. reader=readdb(conn,"select * from mail")   
  45.  
  46. while (reader.read())   
  47. try   
  48. mailObj.To=reader("mail")   
  49.  
  50. mailObj.Subject =subject.value   
  51. mailObj.Body =content.value   
  52. '默認發送郵件格式為純文本TEXT,  
  53. 如果選擇HTML格式,設置為HTML格式   
  54. if mode.value="HTML" then   
  55. mailObj.BodyFormat=MailFormat.Html   
  56. end if   
  57. '設置郵件發送級別為高   
  58. mailObj.Priority = MailPriority.High   
  59.  
  60. Smtp.Send(mailObj)   
  61.  
  62. lbmsg.text=lbmsg.text+reader("mail")  
  63. +"OK!Time:"+Now().ToString()+"〈 br 〉"   
  64. catch er as Exception   
  65. lbmsg.text=lbmsg.text+er.message+"〈 br 〉"   
  66. finally   
  67. End Try   
  68. End While   
  69. reader.close()   
  70. Dim strwriterobj As StreamWriter   
  71. try   
  72. strwriterobj= File.CreateText  
  73. (Server.MapPath("log\")+subject.value+".htm")   
  74. strwriterobj.Write("〈 HTML 〉〈 head 〉  
  75. 〈 meta http-equiv='Content-Language'   
  76. content='zh-cn' 〉  
  77. 〈 meta http-equiv='Content-Type'   
  78. content='text/html; charset=gb2312' 〉  
  79. 〈 /head 〉〈 BODY 〉"+lbmsg.text+" 
  80. 〈 /BODY 〉〈 /HTML 〉")   
  81. catch er as Exception   
  82. lbmsg.text=lbmsg.text+er.message+"〈 br 〉"   
  83. finally   
  84. strwriterobj.close   
  85. lbmsg.text=lbmsg.text+"日志保存成功!保存目錄:  
  86. 〈 br 〉"+Server.MapPath("log\")+subject.value+".htm"   
  87. End Try   
  88. End Sub   
  89.  
  90. '鏈接數據庫   
  91. 'www.knowsky.com   
  92. Function ConnectDB(txtdatabase AS String)   
  93. As Oledbconnection   
  94. Dim conn AS OledbConnection   
  95. Dim connstr As String   
  96. connstr="Provider=Microsoft.Jet.OLEDB.4.0;   
  97. Persist Security Info=False; Data Source="   
  98. +Server.MapPath(txtdatabase)   
  99. connectdb=New OledbConnection(connstr)   
  100. End Function   
  101.  
  102. '讀取一條記錄   
  103. Function readdb(conn As Oledbconnection,  
  104. txtsql As String) As OledbDataReader   
  105. Dim cmd As OledbCommand   
  106. cmd=new oledbcommand(txtsql,conn)   
  107. readdb=cmd.executereader()   
  108. End Function   
  109. 〈 /SCRIPT 〉   
  110.  
  111. 〈 p align="center" 〉〈 font size="5"   
  112. face="楷體_GB2312" 〉郵件列表〈 /font 〉〈 /p 〉   
  113. 〈 hr width="60%" size="1" 〉   
  114. 〈 div align="center" 〉   
  115. 〈 center 〉   
  116. 〈 table border="0" width="770" 〉   
  117. 〈 tr 〉   
  118. 〈 td width="100%" 〉   
  119. 〈 form method="POST" runat="Server" 〉   
  120. 〈 table border="0" width="100%" height="125" 〉   
  121. 〈 tr 〉   
  122. 〈 td width="15%" align="right" height="24" 〉   
  123. 發送郵箱: 〈 /td 〉   
  124. 〈 td width="85%" height="24" 〉〈 input type="text"   
  125. name="sendmailbox" id="sendmailbox"   
  126. size="50" runat="Server"/ 〉〈 /td 〉   
  127. 〈 /tr 〉   
  128. 〈 tr 〉   
  129. 〈 td width="15%" align="right" height="24" 〉   
  130. 標題: 〈 /td 〉   
  131. 〈 td width="85%" height="24" 〉〈 input type="text"   
  132. name="subject" id="subject" size="50"   
  133. runat="Server"/ 〉〈 /td 〉   
  134. 〈 /tr 〉   
  135. 〈 tr 〉   
  136. 〈 td width="15%" align="right" height="60" 〉  
  137. 內容:〈 /td 〉   
  138. 〈 td width="85%" height="60" 〉〈 textarea rows="6"   
  139. name="content" cols="80" id="content" runat="Server"/ 〉  
  140. 〈 /textarea 〉〈 /td 〉   
  141. 〈 /tr 〉   
  142. 〈 tr 〉   
  143. 〈 td width="15%" align="right" height="23" 〉方式:〈 /td 〉   
  144. 〈 td width="85%" height="23" 〉〈 select size="1"   
  145. name="mode" id="mode" runat="Server" 〉   
  146. 〈 option value="Text" selected 〉Text〈 /option 〉   
  147. 〈 option value="HTML" 〉HTML〈 /option 〉   
  148. 〈 /select 〉〈 /td 〉   
  149. 〈 /tr 〉   
  150. 〈 /table 〉   
  151. 〈 p align="center" 〉〈 input type="button"   
  152. value=" 提 交 " name="ok" onserverclick="sendmail"   
  153. runat="Server"/ 〉〈 /p 〉   
  154. 〈 /form 〉   
  155. 〈 ASP:Label id="lbmsg" runat="Server"/ 〉   
  156. 〈 p 〉   
  157. 〈 /td 〉   
  158. 〈 /tr 〉   
  159. 〈 tr 〉   
  160. 〈 td width="100%" 〉〈 /td 〉   
  161. 〈 /tr 〉   
  162. 〈 /table 〉   
  163. 〈 /center 〉   
  164. 〈 /div 〉   
  165. 〈 /body 〉   
  166. 〈 /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”引入。

在使用以上ASP.NET郵件列表程序的時候,我們需要注意幾個問題,第一是Smtp服務器的設置,我們知道,Smtp服務器是郵件發送服務器,而現在一些免費郵件提供商是不再提供針對所有郵件提供Smtp服務,在發送郵件的時候,需要驗證用戶信息,而我們看到,在以上的程序中甚至整個ASP.NET的郵件部分,根本沒有考慮Smtp用戶驗證問題,以此,我們不能隨便使用一個Smtp服務器,而必須使用完全免費的Smtp服務器,這樣的服務器現在已經很少了。所以,如果有條件,最好我們自己設置計算機為Smtp服務器,怎樣實現,我們可以下載EasyMail等軟件。第二是郵件發送速度問題,如果Smtp服務器在本地計算機,發送速度很快的,基本上不用擔心,如果不是本地服務器,那么發送的時候最好不要以此太多,一是速度問題,二是以此發送太多郵件,Smtp服務器可能認為是垃圾郵件而拒絕服務,這一點我們可以自己試驗;第三是郵件發送發送人的設定問題,通過這個程序或者說通過使用ASP.NET的郵件功能,我們完全可以在郵件發送人隨意寫,這樣,很容易別有用心的人就可以通過這個功能來發送垃圾郵件,當然,這些郵件追查來源很簡單,直接查IP就可以,隨意,我們最好不要隨意發送。

三、總結

以上我們用一個具體的實例介紹了完整ASP.NET郵件列表的設計,該程序完全根據實際需要設計,具有較大的實用性。在程序實現中,我們同時使用了數據庫、郵件和文件操作,涉及內容較多,有興趣的朋友可以根據自己的實際要求適當修改,使程序功能更加全面。

【編輯推薦】

  1. ASP.NET Cache支持的三種類型
  2. ASP.NET多語言支持組件簡介
  3. ASP.NET服務器控件編程淺析
  4. ASP.NET移動開發入門基礎(1)
  5. ASP.NET SqlDataSource控件入門
責任編輯:冰荷 來源: yesky
相關推薦

2009-08-05 16:59:55

ASP.NET組件設計

2009-08-05 16:53:14

ASP.NET組件設計

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-08-07 17:49:44

控件設計器

2009-07-28 10:01:16

ASP.NET Exc

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-07 16:32:52

ASP.NET控件設計時支

2009-08-07 17:59:35

控件設計器

2009-08-05 15:50:13

ASP.NET優點

2009-07-31 12:43:59

ASP.NET MVC

2009-08-07 17:17:43

ASP.NET控件設計

2009-07-24 10:53:51

ASP.NET實現靜態

2009-08-04 10:02:36

中國站長站

2009-07-24 11:35:08

2009-08-10 14:38:29

ASP.NET組件設計

2009-07-28 13:06:19

ASP.NET電子商務

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-08-04 17:16:16

ASP.NET代碼優化

2009-08-05 16:17:29

ASP.NET For
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一区 | 亚洲高清一区二区三区 | 午夜免费网站 | 国产精品国产馆在线真实露脸 | 黄 色 毛片免费 | 日本色综合 | 男女视频在线观看 | 91 在线| 精品久久久久久18免费网站 | 日本不卡免费新一二三区 | 欧美xxxx日本 | 日韩精品中文字幕一区二区三区 | 久久久国产精品一区 | 国产一区二区久久 | 国产精品一级 | 91.com视频| 亚洲狠狠 | 在线观看免费av网站 | 成人免费大片黄在线播放 | 亚洲高清视频一区二区 | 91九色porny首页最多播放 | 亚洲97| 国产一伦一伦一伦 | 开操网 | 国产91丝袜在线熟 | 精品在线看 | 久久久一区二区三区四区 | 日韩欧美福利视频 | 我想看一级黄色毛片 | 亚洲精品久久久一区二区三区 | 国产精品jizz在线观看老狼 | 亚洲视频在线一区 | 9999国产精品欧美久久久久久 | 日韩免费视频一区二区 | 久久99一区二区 | 久久亚洲一区二区三 | 午夜精品在线观看 | 久久99精品久久久97夜夜嗨 | 91视频正在播放 | 日韩欧美一区二区三区免费看 | 精品国产色 |