首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > 邮件与程序开发 > 用ASP建立邮件列表 > 正文

用ASP建立邮件列表

出处:赛迪网 作者:赛迪网 时间:2005-8-16 16:46:00
说起发送Email,我们总是想起邮件客户端软件,比如Outlook Express、Foxmail(最新版3.0 beta1已于 4月30号发布,请到http://www.aerofox.com/下载)等。如果在Web上发送Email,大家肯定又会想起一些免费的电子邮箱,比如大名鼎鼎的www.163.net等,那么如何实现在Web上发送Email呢?大家可能会想到首先安装邮件服务器,比如Exchange,其实NT Server4.0加IIS4.0就可以了,本文就是想以实例来说明技术上的实现方法。

  邮件列表(Maillist)在Internet上应用比较广泛。使用邮件列表可以与访问者保持积极的联系,快捷、简便、低成本地发送信息,也可以提高网站的知名度。扩展后的邮件列表也可以用于创立电子杂志(像索易:http://www.soim.online.sh.cn/)。探讨邮件列表的建立是非常有意义的,我们的实例就是建立一个邮件列表。

  一、电子邮件发送原理

  邮件传递过程的实现是从一个如Microsoft Outlook Express这样的客户端软件将一份邮件发送给一个SMTP服务器开始的,然后SMTP服务器负责决定如何处置该邮件。

  如果电子邮件的目的域是服务器的本地域(比如将电子邮件发送给harrizon@domain.com,而且SMTP服务器是smtp.domain.com),那么该邮件被存储在这个服务器上,否则将该邮件转发给另一个合适的服务器。

  网络上所有的SMTP服务器都可以通过一种“语言”互相通信,这个通用语言就是SMTP协议。但是,服务器如何决定传递邮件的目的地呢?可以通过它的域名解析系统(DNS)来查找域。

  NT Server是目前使用比较广泛的网络服务器,而且前景看好,IIS(Internet Information Server4.0,Internet信息服务器)是网络文件和应用程序服务器,它们使用HTTP、Gopher以及FTP,通过Internet或Intranet来提供服务。

  IIS SMTP服务仅提供邮件传递功能,它不能对接收邮件提供服务。Microsoft在IIS中加入了一个特殊的组件—Collaboration Data Objects for Microsoft Windows NT Server,也称为CDO for NTS Library,它提供邮件对象,可以在ASP(Active Server Pages)脚本中使用这些对象来访问和处理发送给特定用户的电子邮件。

  邮件列表就是在网上收集访问者的Email,从而在需要的时候定期向该订阅者发送一定的信息。需要的工作是收集Email、发送Email。下面我们可以看到如何来完成这些工作。

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

  利用IIS SMTP和CDO for IIS,可以从一个ASP脚本直接向Internet上的任何人发送电子邮件。

  首先要安装Microsoft NT Ser-ver4.0,然后再安装IIS4.0,务必注意是否安装了SMTP服务,默认方式是安装的。安装完毕后不妨看看在winnt\system32目录下是否有一个文件cdonts.dll。如果存在这个文件,那么安装过程宣告成功。

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

  <%

  Dim MailObject

  Set MailObject = 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。

  <form method="POST" action="addmail.asp">

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

   value="订阅" name="B1"><input type="reset" value="重写" name="B2"></p>

  </form>

  用浏览器打开程序2得到结果如图1,填入一个合法的email地址,单击“订阅”。服务器自动调用程序3,输入的email将自动入库,你不妨用Access直接打开数据库mail.mdb看看刚刚入库的Email是否保存了。

  (图注ASP-1) 图1

  <%

  email=trim(request("email"))

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

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

  SQL="INSERT INTO mail(email) VALUES('"+email+"')"

  Set RS=Connection.Execute(sql)

  response.write email%>,多谢您加入!

  程序3的目的是将email保存到数据库mail.mdb里去。

  Email入库意味着有了订阅者,现在我们可以进入下一个步骤—发送邮件给订阅者了。

  这里我们用两个程序(sendmail. asp,mail.asp)来完成这部分工作,sendmail.asp的作用是生成一个界面(见图2),在这里我们可以选择发送的对象(全部或部分),填写发送的主题和内容,也可以粘贴附件,填写完毕后就单击“发送邮件”,此时对于管理员来说,一切工作是结束了,但如何发送邮件呢?我们就需要调用程序5了。

  程序5为发送邮件处置程序mail. asp。其作用就是发送邮件,当然是根据程序4的选择和输入来处理邮件的。程序5的完整源代码参见《电子与电脑》的网站www.pccomputing.com.cn。

  程序4为在线发送电子邮件sendmail.asp。程序运行结果如图2所示。

  (图注ASP-2) 图2

  (程序4)

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

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

  sql="select * from mail"

  Set RS=Connection.Execute(sql)

  sql1="select count(*) from mail"

  Set RS1=Connection.Execute(sql1)

  %>

  <form method="POST" action="mail.asp">

  <table border="1" width="100%">

   <tr bgColor="#abcdef">

   <td align="middle">适占耍喝*<%=rs1(0)%>位订阅者<inputtype=

   "checkbox" name="all" value="1" checked><hr><%do while not

   rs.eof%>

   <font size="3">

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

  <%=RS(1)%>

  <%

   rs.movenext

   loop

  %> </td> </tr>

   <tr bgColor="#eeddff">

   <td width="7%">

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

   邮件内容:<br>

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

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

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

   <input type="submit" value="发送邮件" name="B1"><input type="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")

  if ckall=1 then '是否是给所有订阅者发送邮件

  Set Conn2=Server.CreateObject("ADODB.Connection")

  conn2.open "MAIL","","" '打开数据库

  sql2="select * from mail"

  Set RS2=Conn2.Execute(SQL2) '从数据库读出所有的邮件地址

   do while not rs2.eof

  item=rs2(0)

  Set Conn=Server.CreateObject("ADODB.Connection")

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

  sql="select * from mail where id="+cstr(item)+""

  Set RS=Conn.Execute(SQL)

  Set MailObject = Server.CreateObject("CDONTS.NewMail")

  if att_file="" then '附件为空

  MailObject.Send usemail,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.AttachFile att_file,f_name

  MailObject.Send '发送邮件

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

  end if

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

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

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

  %><hr><% rs2.movenext

   loop

  else

  for each item in request("shou")

  Set Conn=Server.CreateObject("ADODB.Connection")

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

  sql="select * from mail where id="+cstr(item)+""

  Set RS=Conn.Execute(SQL)

  Set MailObject = Server.CreateObject("CDONTS.NewMail")

  if att_file="" then

  MailObject.Send usemail,rs(1),subject,body

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

  %><hr><%else '

  f_name=fname

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

  response.write rs(1) +"<br>"

  MailObject.To=rs(1) '收件人

  MailObject.Subject=subject

  MailObject.Body=body

  MailObject.AttachFile att_file,f_name

  MailObject.Send

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

  end if

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

  end if

  %>

  

  三、 后记

  1. 由于篇幅的原因,这里省去了一些代码,请读者理解。

  2. 如果发送邮件时加一个接收电子邮件地址的输入栏,那么你可以给任何一个合法的地址发送电子邮件,应用也就更为广泛了。

  3. 使用本程序可以发送匿名邮件,但注意请勿乱用!

  4. 若是使用POP3组件,就可以接收邮件了。

  5. 本程序的附件发送不支持中文路径,有心者不妨编写更好的组件来支持中文路径。
,
相关文章 热门文章
  • windows XP下不能运行ASP的解决方法
  • 华硕MASP邮件信息化平台再一次升级
  • 深入解析ASP.NET中实现发送电子邮件
  • MailASP邮件服务 阻挡威胁于千里之外
  • Asp开发WAP简易邮件系统实例
  • 关于OMA错误:Access to the path "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\oma\55aaeb43\5ef66257" is denied的解决方法
  • 在Asp.Net中使用SmtpMail发送邮件的方法
  • ASP.NET 2.0发送电子邮件中存在的问题
  • 卡巴斯基(Kaspersky)6.0试用手记
  • postfix+courier-authlib+courier-imap+cyrus-sasl2+TLS+kaspersky
  • 关于卡巴斯基使用的个人经验综合
  • ASP.NET 2.0发送电子邮件全面剖析之二
  • 用C++ Builder实现电子邮件群发
  • 用Cdonts实现发送Email
  • Jmail的主要参数列表
  • ASP.NET 2.0发送电子邮件全面剖析之二
  • VC++ SMTP协议电子邮件传送剖析
  • 通过sina的smtp验证的Java发送邮件源代码
  • ASP.NET 2.0中发送电子邮件剖析之一
  • 在Asp.Net中使用SmtpMail发送邮件的方法
  • .NET环境下Email的技术介绍
  • ASP.NET 2.0发送电子邮件中存在的问题
  • 用ASP判断Email地址是否有效
  • IIS如何接收ServerXMLHTTP传过来的编码字符?
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号