온라인 애플리케이션을 작성할 때 온라인으로 이메일을 보내는 문제에 자주 직면합니다. 이메일 내용은 프로그램에 의해 동적으로 결정됩니다. 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_dataarrival(byval bytestotal as long)
on 오류 발생 goto daerr
희미한 s as string
sock.getdata s
선택 케이스 sflag
케이스 sfstart
케이스 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) (s, 3 ) 〈〉 "354" then goto srverr
sflag = sfsendover //데이터는 4개 항목을 포함하며 로 끝납니다.
send "from: " && mfrom
send "to: " && mto
send "subject: " && msubject && vbcrlf
mtext 보내기
" ."
case sfsendover
if left(s, 3) 〈〉 "250" then goto srverr
sflag = sfstart
sendok = true
send "quit"
end 선택
종료 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
여기서 변수는 할당되거나 이전 변수에서 올 수 있습니다. 요청 페이지.