簡單快捷實現ASP線上發郵件功能

來源:互聯網
上載者:User

在編寫網上應用程式時,經常碰到需要線上發送郵件的問題,郵件內容是由程式動態決定的,如果你採用的是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 && 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頁面。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.