注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

汇总技巧

你快乐我快乐.... 汇集各类技巧,传播技巧,让我们共同熟练运用技巧..

 
 
 

日志

 
 

简单快捷实现ASP在线发邮件功能  

2011-06-03 21:48:03|  分类: ◆ASP技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

简单快捷实现ASP在线发邮件功能
  在编写网上应用程序时,经常碰到需要在线发送邮件的问题,邮件内容是由程序动态决定的,如果你采用的是ASP方式来编写网上应用程序,如何简单、快捷地实现这一功能呢?
  笔者在实践中利用ASP的com组件功能,在vb中实现了一个发邮件的小组件,在ASP中只通过轻松调用,就可以实现该功能。所有邮件处理机制都被封装在这个组件中,使用起来极为方便。下面将详细介绍该组件的基本开发原理以及在ASP中的应用。
  1. 利用Winsock控件与发送邮件的smtp联系
  和smtp的联系包括握手、发送数据以及关闭等全过程,主要程序如下:
  建立一个frmsendmail 的窗体,其中包含一个winsock控件,有以下几个公共变量:
  public mstmp as string
  //发送邮件的stmp
  public mfrom as string
  //from 地址
  public mto as string
  //到达地址
  public msubject as string
  //邮件主题
  public mtext as string
  //邮件正文
  sock.connect mstmp, 25
  //和发送邮件的stmp建立联系
  private sub sock_connect()
  sflag = sfconn
  //连接成功后设置参数
  end sub
  private sub sock_dataarrival(byval bytestotal as long)
  on error goto daerr
  dim s as string
  sock.getdata s
  select case sflag
  case sfstart
  case sfconn
  sflag = sfhelo
  //发出握手信息hello
  send "helo "  mmyname
  case sfhelo
  sflag = sffrom
  send "mail from:"  getreal(mfrom)
  case sffrom
  if left(s, 3) 〈〉 "250" then goto srverr
  //如果成功发送接收邮件地址
  sflag = sfrcpt
  send "rcpt to:"  getreal(mto)
  case sfrcpt
  if left(s, 3) 〈〉 "250" then goto srverr
  //如果成功开始发送数据
  sflag = sfdata
  send "data"
  case sfdata
  if left(s, 3) 〈〉 "354" then goto srverr
  sflag = sfsendover //数据包括4项,最后以 . 结束
  send "from: "  mfrom
  send "to: "  mto
  send "subject: "  msubject  vbcrl
  send mtext
  send "."
  case sfsendover
  if left(s, 3) 〈〉 "250" then goto srverr
  sflag = sfstart
  sendok = true
  send "quit"
  end select
  exit sub
  end sub
  2. 将上述功能封装在一个类中
  由于ASP能使用的组件中不能存在控件,所以要通过类模块来封装上述窗体。首先在类初始化时建立一窗体:
  private sub class_initialize()
  set frm = new frmsendmail
  end sub
  把窗体的公共变量作为属性封装在类模块中。
  该窗体的函数接口为:
  public sub send()
  frm.sendstart
  end sub
  3. 注册该组件
  将上述工程编译成dll文件,通过vb注册或手工注册都可以。
  4. 在ASP中的应用
  调用方法如下:
  set smail=server.createobject("sendmailx.mail")
  smail.stmp="166.166.1.1"
  smail.logfile="e:\logs\mail.log"
  smail.mfrom = mfromname  " 〈"  mfromaddr  "〉"
  smail.mto = mtoname  " 〈"  mtoaddr  "〉"
  smail.msubject = msubject
  smail.mtext = mtext
  smail.send
  其中变量可以通过赋值,也可以来自上一个request页面。  

  评论这张
 
阅读(94)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017