При написании онлайн-приложений мы часто сталкиваемся с проблемой отправки электронных писем онлайн. Содержимое электронной почты динамически определяется программой. Если вы используете ASP для написания онлайн-приложений, как можно просто и быстро реализовать эту функцию?
На практике автор использует функцию COM-компонента ASP для реализации небольшого компонента для отправки электронных писем в VB. Эту функцию можно реализовать, просто вызвав ее в ASP. Все механизмы обработки электронной почты инкапсулированы в этом компоненте, что чрезвычайно удобно в использовании. Основные принципы разработки этого компонента и его применения в ASP будут подробно представлены ниже.
1. Используйте элемент управления Winsock для связи с SMTP для отправки электронных писем
, а контакт SMTP включает в себя весь процесс установления связи, отправки данных и закрытия. Основные процедуры следующие:
Создайте форму frmsendmail, которая содержит элемент управления Winsock и имеет следующие общедоступные данные. переменные:
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
//Установить параметры после успешного
завершения соединения sub
Private Sub sock_dataarrival(byval bytestotal as long)
при ошибке 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" затем перейти к srverr
sflag = sfstart
sendok = true
отправить "quit"
end select
exit sub
end sub
2. Инкапсулируйте вышеуказанные функции в класс.
Поскольку элементы управления не могут существовать в компонентах, которые может использовать ASP, вышеуказанные формы должны быть инкапсулированы через модули классов. Сначала создайте форму во время инициализации класса:
частный подкласс 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
, где переменная может быть назначена или взята из предыдущей страница запроса.