實現ASP檔案線上發郵件

來源:互聯網
上載者:User

筆者在實踐中利用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的軟體編程欄目上下載。  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.