莫相离 发表于 2015-1-16 22:29:23

ASP网站制作之用ASP创建邮件列表

ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!提及发送Email,我们老是想起邮件客户端软件,好比OutlookExpress、Foxmail(最新版3.0beta1已于4月30号公布,请到http://www.aerofox.com/下载)等。假如在Web上发送Email,人人一定又会想起一些收费的电子邮箱,好比赫赫有名的www.163.net等,那末怎样完成在Web上发送Email呢?人人大概会想到起首安装邮件服务器,好比Exchange,实在NTServer4.0加IIS4.0就能够了,本文就是想以实例来讲明手艺上的完成办法。

  邮件列表(Maillist)在Internet上使用对照普遍。利用邮件列表能够与会见者坚持主动的接洽,快速、烦琐、低本钱地发送信息,也能够进步网站的出名度。扩大后的邮件列表也能够用于创建电子杂志(像索易:http://www.soim.online.sh.cn/)。切磋邮件列表的创建长短常成心义的,我们的实例就是创建一个邮件列表。

  1、电子邮件发送道理

  邮件传送历程的完成是从一个如MicrosoftOutlookExpress如许的客户端软件将一份邮件发送给一个SMTP服务器入手下手的,然后SMTP服务器卖力决意怎样处理该邮件。

  假如电子邮件的目标域是服务器的当地域(好比将电子邮件发送给harrizon@domain.com,并且SMTP服务器是smtp.domain.com),那末该邮件被存储在这个服务器上,不然将该邮件转发给另外一个符合的服务器。

  收集上一切的SMTP服务器都能够经由过程一种“言语”相互通讯,这个通用言语就是SMTP协定。可是,服务器怎样决意传送邮件的目标地呢?能够经由过程它的域名剖析体系(DNS)来查找域。

  NTServer是今朝利用对照普遍的收集服务器,并且远景看好,IIS(InternetInformationServer4.0,Internet信息服务器)是收集文件和使用程序服务器,它们利用HTTP、Gopher和FTP,经由过程Internet或Intranet来供应服务。

  IISSMTP服务仅供应邮件传送功效,它不克不及对吸收邮件供应服务。Microsoft在IIS中到场了一个特别的组件―CollaborationDataObjectsforMicrosoftWindowsNTServer,也称为CDOforNTSLibrary,它供应邮件工具,能够在ASP(ActiveServerPages)剧本中利用这些工具来会见和处置发送给特定用户的电子邮件。

  邮件列表就是在网上搜集会见者的Email,从而在必要的时分按期向该定阅者发送必定的信息。必要的事情是搜集Email、发送Email。上面我们能够看到怎样来完成这些事情。

  2、从Web页面发送电子邮件

  使用IISSMTP和CDOforIIS,能够从一个ASP剧本间接向Internet上的任何人发送电子邮件。

  起首要安装MicrosoftNTSer-ver4.0,然后再安装IIS4.0,务必注重是不是安装了SMTP服务,默许体例是安装的。安装终了后无妨看看在winntsystem32目次下是不是有一个文件cdonts.dll。假如存在这个文件,那末安装历程宣布乐成。

  程序1是最复杂的发送电子邮件程序,它将一封主题为subject、内容为test的邮件从邮箱harrizon@163.net发送到ivan@188.net。

  <%

  DimMailObject

  SetMailObject=Server.CreateObject("CDONTS.NewMail")

  MailObject.Send"harrizon@163.net","ivan@188.net","subject","test"

  %>

  

  如许的程序固然能够疾速测试是不是乐成,可是有用代价其实不高。我们将其优化一下,依据邮件列表的特性,编出一个有有用代价的程序。

  起首请用Access创建一个数据库mail.mdb,用于保留email地点;然后必要创建一个表,表的名字为mail,包括一个字段email(字段名email,数据范例:文本,字段长度:50)便可,别的能够有一个id(字段名:id,数据范例:主动编号,本字段能够不要)。设置ODBC,在把持面板中双击ODBC图标,设立dsn,其名为mail。

  至此设置部分已完成,如今编写程序。

  将程序2到场到你的主页的符合地位。程序2的目标是为了搜集会见者的Email。

  <formmethod="POST"action="addmail.asp">

  <p>您的Email:<inputtype="text"name="email"size="20"><inputtype="submit"

  value="定阅"name="B1"><inputtype="reset"value="重写"name="B2"></p>

  </form>

  用扫瞄器翻开程序2失掉了局如,填进一个正当的email地点,单击“定阅”。服务器主动挪用程序3,输出的email将主动进库,你无妨用Access间接翻开数据库mail.mdb看看方才进库的Email是不是保留了。

  (图注ASP-1)

  <%

  email=trim(request("email"))

  SetConnection=Server.Create-Object("ADODB.Connection")

  Connection.Open"mail","",""

  SQL="INSERTINTOmail(email)VALUES("+email+")"

  SetRS=Connection.Execute(sql)

  response.writeemail%>,多谢您到场!

  程序3的目标是将email保留到数据库mail.mdb里往。

  Email进库意味着有了定阅者,如今我们能够进进下一个步骤―发送邮件给定阅者了。

  这里我们用两个程序(sendmail.asp,mail.asp)来完成这部合作作,sendmail.asp的感化是天生一个界面(见),在这里我们能够选择发送的工具(全体或部分),填写发送的主题和内容,也能够粘贴附件,填写终了后就单击“发送邮件”,此时关于办理员来讲,统统事情是停止了,但怎样发送邮件呢?我们就必要挪用程序5了。

  程序5为发送邮件处理程序mail.asp。其感化就是发送邮件,固然是依据程序4的选择和输出来处置邮件的。程序5的完全源代码拜见《电子与电脑》的网站www.pccomputing.com.cn。

  程序4为在线发送电子邮件sendmail.asp。程序运转了局如所示。

  (图注ASP-2)

  (程序4)

  <%SetConnection=Server.CreateObject("ADODB.Connection")

  Connection.Open"mail","",""

  sql="select*frommail"

  SetRS=Connection.Execute(sql)

  sql1="selectcount(*)frommail"

  SetRS1=Connection.Execute(sql1)

  %>

  <formmethod="POST"action="mail.asp">

  <tableborder="1"width="100%">

  <trbgColor="#abcdef">

  <tdalign="middle">适占耍喝*<%=rs1(0)%>位定阅者<inputtype=

  "checkbox"name="all"value="1"checked><hr><%dowhilenot

  rs.eof%>

  <fontsize="3">

  <inputtype="checkbox"name="shou"value="<%=rs(0)%>">

  <%=RS(1)%>

  <%

  rs.movenext

  loop

  %></td></tr>

  <trbgColor="#eeddff">

  <tdwidth="7%">

  邮件主题:<inputtype="text"name="subject"size="53"><br>

  邮件内容:<br>

  <textarearows="9"name="body"cols="59"></textarea><br>

  您的mail:<inputtype="text"name="usemail"size="50"value="harrizon@21cn.com">

  <br>附件:<inputtype="file"maxlength="50"name="attfile"size="20"value="">附件称号:<inputtype="text"name="fname"size="10"value=""><br></p>

  <inputtype="submit"value="发送邮件"name="B1"><inputtype="reset"value="重写"name="B2"></p></td>

  </tr>

  </table>

  </form>

  

  (程序5)

  <%SHOU=trim(request("SHOU"))获得在程序四选择和输出的内容

  subject=trim(request("subject"))

  body=trim(request("body"))

  att_file=trim(request("attfile"))

  fname=trim(request("fname"))

  usemail=trim(request("usemail"))

  ckall=request("all")

  ifckall=1then是不是是给一切定阅者发送邮件

  SetConn2=Server.CreateObject("ADODB.Connection")

  conn2.open"MAIL","",""翻开数据库

  sql2="select*frommail"

  SetRS2=Conn2.Execute(SQL2)从数据库读出一切的邮件地点

  dowhilenotrs2.eof

  item=rs2(0)

  SetConn=Server.CreateObject("ADODB.Connection")

  conn.open"MAIL","",""

  sql="select*frommailwhereid="+cstr(item)+""

  SetRS=Conn.Execute(SQL)

  SetMailObject=Server.CreateObject("CDONTS.NewMail")

  ifatt_file=""then附件为空

  MailObject.Sendusemail,rs(1),subject,body

  response.write"无附件web邮件发送乐成!"

  %><hr><%else

  f_name=fname

  MailObject.From=gzer@163.net发件邮址

  MailObject.To=rs(1)收件人

  MailObject.Subject=subject

  MailObject.Body=body

  MailObject.AttachFileatt_file,f_name

  MailObject.Send发送邮件

  response.write"含附件web邮件发送乐成!"发送乐成

  endif

  response.write"收信地点:"+rs(1)+"<p>"

  response.write"主题:"+subject+"<br>"

  response.write"内容:"+body+"<br>"

  %><hr><%rs2.movenext

  loop

  else

  foreachiteminrequest("shou")

  SetConn=Server.CreateObject("ADODB.Connection")

  conn.open"MAIL","",""

  sql="select*frommailwhereid="+cstr(item)+""

  SetRS=Conn.Execute(SQL)

  SetMailObject=Server.CreateObject("CDONTS.NewMail")

  ifatt_file=""then

  MailObject.Sendusemail,rs(1),subject,body

  response.write"无附件web邮件发送乐成!"

  %><hr><%else

  f_name=fname

  MailObject.From="gzer@163.net"发件邮址

  response.writers(1)+"<br>"

  MailObject.To=rs(1)收件人

  MailObject.Subject=subject

  MailObject.Body=body

  MailObject.AttachFileatt_file,f_name

  MailObject.Send

  response.write"含附件web邮件发送乐成!"

  endif

  %><hr><%next下一封邮件

  endif

  %>

  

  3、跋文

  1.因为篇幅的缘故原由,这里省往了一些代码,请读者了解。

  2.假如发送邮件时加一个吸收电子邮件地点的输出栏,那末你能够给任何一个正当的地点发送电子邮件,使用也就更加普遍了。

  3.利用本程序能够发送匿名邮件,但注重请勿乱花!

  4.如果利用POP3组件,就能够吸收邮件了。

  5.本程序的附件发送不撑持中文路径,故意者无妨编写更好的组件来撑持中文路径。
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。

admin 发表于 2015-1-19 14:45:55

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

山那边是海 发表于 2015-1-26 23:55:14

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

蒙在股里 发表于 2015-2-5 01:29:11

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

若天明 发表于 2015-2-11 00:53:01

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

再现理想 发表于 2015-3-1 19:11:39

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

精灵巫婆 发表于 2015-3-10 22:32:20

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

冷月葬花魂 发表于 2015-3-17 11:24:59

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

爱飞 发表于 2015-3-24 09:25:55

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
页: [1]
查看完整版本: ASP网站制作之用ASP创建邮件列表