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