Ao escrever aplicativos on-line, muitas vezes encontramos o problema de enviar e-mails on-line. O conteúdo do e-mail é determinado dinamicamente pelo programa. Se você usar ASP para escrever aplicativos on-line, como poderá implementar essa função de maneira simples e rápida?
Na prática, o autor usa a função do componente COM do ASP para implementar um pequeno componente para envio de e-mails em VB. Essa função pode ser realizada simplesmente chamando-a em ASP. Todos os mecanismos de processamento de e-mail estão encapsulados neste componente, que é extremamente conveniente de usar. Os princípios básicos de desenvolvimento deste componente e sua aplicação em ASP serão apresentados detalhadamente a seguir.
1. Use o controle Winsock para contatar SMTP para envio de e-mails
, e o contato SMTP inclui todo o processo de handshaking, envio de dados e fechamento. Os principais procedimentos são os seguintes:
Crie um formulário frmsendmail, que contém um controle Winsock e possui o seguinte público. variáveis:
public mstmp as string
// stmp para envio de email
public mfrom as string
// do endereço
public mto as string
// endereço de chegada
public msubject as string
// assunto do email
public mtext as string
// corpo do email
sock.connect mstmp, 25
// e enviar Estabelecer contato via stmp do e-mail
private sub sock_connect()
sflag = sfconn
//Definir parâmetros após conexão bem-sucedida
end sub
private sub sock_dataarrival(byval bytestotal as long)
em caso de erro goto daerr
dim s as string
sock.getdata s
select case sflag
case sfstart
case sfconn
sflag = sfhelo
//Envia mensagem de handshake hello
send "helo " && mmyname
case sfhelo
sflag = sffrom
send "mail from:" && getreal(mfrom)
case sffrom
if left(s, 3) 〈〉 "250" then goto srverr
//Se o endereço de e-mail de recebimento for enviado com sucesso,
sflag = sfrcpt
send "rcpt to:" && getreal(mto)
case sfrcpt
if left(s, 3) 〈〉 "250" then goto srverr
//Se tiver sucesso, inicia o envio de dados
sflag = sfdata
envia "data"
case sfdata
se left (s, 3) 〈〉 "354" então vá para srverr
sflag = sfsendover //Os dados incluem 4 itens e terminam com
send "from: " && mfrom
send "to: " && mto
send "subject: " && msubject && vbcrlf
enviar mtext
enviar "."
case sfsendover
if left(s, 3) 〈〉 "250" então ir para srverr
sflag = sfstart
sendok = true
enviar "quit"
end select
exit sub
end sub
2. Encapsule as funções acima em uma classe
Como os controles não podem existir nos componentes que o ASP pode usar, os formulários acima devem ser encapsulados por meio de módulos de classe. Primeiro, crie um formulário durante a inicialização da classe:
private sub class_initialize()
set frm = new frmsendmail
end sub
encapsula as variáveis públicas do formulário como atributos no módulo de classe.
A interface de função deste formulário é:
public sub send()
frm.sendstart
end sub
3. Registre este componente
para compilar o projeto acima em um arquivo dll. Você pode registrá-lo através do VB ou manualmente.
4.
Ométodo de chamada do aplicativo em ASP
é o seguinte:
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
onde a variável pode ser atribuída ou vir do anterior página de solicitação.