» 网友学堂 » JSP教程 » 实现ASP文件在线发邮件
实现ASP文件在线发邮件
作者:猫猫 发表时间:2008-6-25 00:55 阅读:30次 在百度搜索相关内容

  笔者在实践中利用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 && vbCrLf
  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="eogsmail.log"
  sMail.mFrom = mFromName && " 〈" && mFromAddr && "〉"
  sMail.mTo = mToName && " 〈" && mToAddr && "〉"
  sMail.mSubject = mSubject
  sMail.mText = mText
  sMail.Send
  其中变量可以通过赋值,也可以来自上一个request页面。
  由于版面所限,不能详细叙述,需要此组件的朋友可以到http://flyfly.533.net的软件编程栏目上下载。

#Advertisement