オンライン アプリケーションを作成するときに、電子メールの内容がプログラムによって動的に決定されるという問題がよく発生します。ASP を使用してこの機能を簡単かつ迅速に実装するにはどうすればよいでしょうか。
実際に筆者はASPのCOMコンポーネント機能を利用して、VB上でメール送信用の小さなコンポーネントを実装していますが、この機能はASP上で呼び出すだけで実現できます。すべての電子メール処理メカニズムはこのコンポーネントにカプセル化されており、非常に使いやすくなっています。このコンポーネントの基本的な開発原理と ASP でのアプリケーションについては、以下で詳しく紹介します。
1. Winsock コントロールを使用して
、電子メールを送信するために SMTP に接続します。SMTP コンタクトには、ハンドシェイク、データの送信、および終了のプロセス全体が含まれます。 主な手順は次のとおりです。
Winsock コントロールを含み、次のパブリックを含む frmsendmail フォームを作成します
。変数:
public mstmp as string
// 電子メール送信用の stmp
public mfrom as string
// 送信元アドレス
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_datadelivery(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:logsmail.log"
smail.mfrom = mfromname && " <" && mfromaddr && ">"
smail.mto = mtoname && " <" && mtoaddr && ">"
smail.msubject = msubject
smail.mtext = mtext
smail.send
ここで、変数は割り当てられるか、前の変数から取得されます。リクエストページ。