ASP (5)
5. Wysy│anie i odbieranie poczty e-mail.
Aby m≤c odbieraµ i wysy│aµ pocztΩ elektroniczn▒ poprzez
wykorzystanie obiektu CDONTS nale┐y zainstalowaµ na
serwerze WWW us│ugΩ SMTP z pakietu Option Pack dla
Windows NT 4.0 Server oraz MS Exchange Server.
5.1 Wysy│anie poczty elektronicznej.
Przyk│adowy prosty program wysy│aj▒cy e-maila wygl▒da nastΩpuj▒co:
1:
2:
3:
4:
5:
6: |
<% @LANGUAGE = VBScript
%>
<%
Option Explicit
Dim MojaPoczta
Set MojaPoczta = Server.CreateObject(CDONTS.NewMail)
MojaPoczta.Send "webmaster@domena.pl",
"administrator@domena.pl", _ |
7: |
|
|
"Moja pierwsza poczta",
"Pozdrowienia od webmastera.", 0 |
8:
9: |
Set MojaPoczta = Nothing
%> |
Linie 1-4 s▒ ju┐ znane, gdy┐ zawarte tam komendy by│y wcze╢niej
omawione. W linii 5 zosta│ stworzony obiekt MojaPoczta.
Obiekt NewMail jest czΩ╢ci▒ CDONTS (Collaboration
Data Object for Windows NT Server) i pozwala w prosty spos≤b wysy│aµ
pocztΩ ze strony internetowej przy u┐yciu metody Send.
Wygl▒da to nastΩpuj▒co:
MojaPoczta.Send Aders_OdKogo, Adres_DoKogo,
Temat, Tre╢µ, Priorytet |
Wszystkie parametry s▒ chyba zrozumia│e, mo┐e tylko ostatni,
tj. Priorytet, kt≤ry przyjmuje nastΩpuj▒ce warto╢ci:
0 |
- |
dla niskiego priorytetu wiadomo╢ci |
1 |
- |
dla normalnego priorytetu wiadomo╢ci |
2 |
- |
dla wysokiego priorytetu wiadomo╢ci |
Nale┐y zauwa┐yµ, ┐e w linii 8 obiekt MojaPoczta
zosta│ usuniΩty (zdeaktywowany) poprzez wykonanie komendy:
Powodem tego jest fakt, i┐ obiekt MojaPoczta mo┐e byµ u┐yty
do wys│ania tylko jednej wiadomo╢ci. Po wys│aniu (metoda Send),
automatycznie staje siΩ zupe│nie bezu┐yteczny. Zabezpieczaj▒c
siΩ przed pojawieniem siΩ jakichkolwiek b│Ωd≤w, powinno siΩ
ustawiaµ warto╢µ takiego obiektu na warto╢µ Nothing,
czyli zwolniµ jego zasoby na serwerze.
Komenda:
MojaPoczta.Send Aders_OdKogo, Adres_DoKogo,
Temat, Tre╢µ, Priorytet |
mo┐e przyj▒µ tak┐e inn▒ postaµ:
MojaPoczta.From Aders_OdKogo
MojaPoczta.To Adres_DoKogo
MojaPoczta.Subject Temat
MojaPoczta.Body Tre╢µ
MojaPoczta.Importance Priorytet
MojaPoczta.Send |
Opr≤cz wy┐ej wymienionych metod obiekt MojaPoczta
mo┐e mieµ jeszcze nastΩpuj▒ce:
MojaPoczta.Bcc |
- |
okre╢la osoby, kt≤re jeszcze otrzymaj▒
t▒ wiadomo╢µ; adresy powinny byµ oddzielone ╢rednikiem
(;) |
MojaPoczta.BodyFormat |
- |
okre╢la czy wiadomo╢µ w formacie zwyk│ago
tekstu (warto╢µ 1), czy w formacie HTML (warto╢µ 0) |
MojaPoczta.MailFormat |
- |
okre╢la format poczty, tzn. czy jest to
wiadomo╢µ tekstowa (warto╢µ 1), czy wiadomo╢µ
formatu MIME (warto╢µ 0); je╢li do wiadomo╢ci do│▒czony
jest jaki╢ plik to formatem poczty powinien mieµ warto╢µ
0 (format MIME) |
MojaPoczta.AttachFile |
- |
okre╢la za│▒czone pliki |
W celu lepszego zrozumienia poni┐ej zosta│ przedstawiony
trochΩ bardziej rozbudowany przyk│ad:
<% @LANGUAGE = VBScript %>
<%
Option Explicit
Dim objPoczta, htmlText, wsOsoby
Set objPoczta = Server.CreateObject("CDONTS.NewMail")
htmlText = "<!DOCTYPE HTML PUBLIC ""
-//W3C//DTD HTML 4.0 Transitional//EN"">"
htmlText = htmlText & "<html>"
htmlText = htmlText & "<head>"
htmlText = htmlText & "<title>Moja strona
uruchomiona!</title>"
htmlText = htmlText & "<body bgcolor=#ffffff>"
htmlText = htmlText & "<center>"
htmlText = htmlText & "<p>Strona
""Moja pierwsza "
htmlText = htmlText & "strona"" zosta│a
uruchomiona pod adresem "
htmlText = htmlText & "<a href=""http://www.domena.pl"">"
htmlText = htmlText & "http://www.domena.pl</a>.</p>"
htmlText = htmlText & "<img src=""logo.gif"">"
htmlText = htmlText & "</center>"
htmlText = htmlText & "</body>"
htmlText = htmlText & "</html>"
wsOsoby = Array("uzytkownik1@domena.pl",
"uzytkownik2@domena.pl")
objPoczta.From = "webmaster@domena.pl"
objPoczta.To = "administrator@domena.pl"
objPoczta.Bcc = Join(wsOsoby, ";")
objPoczta.Subject = "Strona uruchomiona!"
objPoczta.BodyFormat = 0
objPoczta.MailFormat = 0
objPoczta.Body = htmlText
objPoczta.AttachFile Server.MapPath("logo.gif")
objPoczta.Send
Set objPoczta = Nothing
%> |
My╢lΩ, ┐e nie trzeba omawiaµ tego programu, gdy┐ wcze╢niej
wszystkie komendy by│y ju┐ omawiane, mo┐e poza funkcj▒ join(tablica,
ci▒gOdzielaj▒cy), kt≤ra w przyk│adzie wygl▒da nastΩpuj▒co:
i zwraca │a±cuch zawieraj▒cy wszystkie elementy tablicy wsOsoby
oddzielone znakiem ╢rednika (;).
5.2 Odbieranie poczty elektronicznej.
W celu odebrania poczty elektronicznej na stronie WWW nale┐y
pos│u┐yµ siΩ obiektem Session z CDONTS.
Korzystaj▒c z CDONTS mo┐na bezpo╢rednio utworzyµ
tylko dwa obiekty, tj. NewMail oraz Session.
Obiekt NewMail zosta│ ju┐ om≤wiony podczas wysy│ania
poczty. Teraz om≤wiony zostanie obiekt Session. Poni┐ej
znajduje siΩ program, kt≤ry przedstawia spos≤b odbierania
poczty poprzez stronΩ WWW, dla przyk│adu niech bΩdzie to poczta
u┐ytkownika webmaster:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16: |
|
<% @LANGUAGE =
VBScript %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>Odbieranie poczty</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<%
Dim cdoSesja, poczta, wiadomosci, wiadomosc, wiadId,
i
Set cdoSesja = Server.CreateObject("CDONTS.Session")
cdoSesja.LogonSMTP "webmaster", "webmaster@domena.pl"
Set poczta = cdoSesja.Inbox
Set wiadomosci = poczta.Messages
wiadId = Trim(Request.QueryString("WiadId"))
if ("" = wiadId Or Not IsNumeric(wiadId)) Then |
17: |
|
|
For Each wiadomosc In
wiadomosci |
18:
19:
20:
21:
22:
23:
24: |
|
|
|
i = i + 1
Response.Write "<a href="""
Response.Write Request.ServerVariables("SCRIPT_NAME")
Response.Write "?WiadId=" & i &
""">" & wiadomosc.Subject
Response.Write "</a>"
Response.Write " wys│ane przez " &
wiadomosc.Sender
Response.Write "<BR>" |
25: |
|
|
Next |
26: |
|
Else |
27:
28:
29:
30: |
|
|
Set wiadomosc =
wiadomosci(wiadId)
Response.Write "<B>Temat:</B> "
& wiadomosc.Subject & "<BR>"
Response.Write "<B>Nadawca:</B> "
& wiadomosc.Sender & "<BR>"
Response.Write "<B>Tre╢µ:</B> "
& wiadomosc.Text & "<BR>" |
31:
32:
33:
34:
35: |
|
End If
cdoSesja.Logoff
%>
</BODY>
</HTML> |
Powy┐sza strona (przyk│ad) umo┐liwia wy╢wietlenie poczty
przychodz▒cej w formie listy oraz wy╢wietlenie zawarto╢ci
zaznaczonej (wybranej z listy) wiadomo╢ci. Poczta nale┐y do u┐ytkownika
webmaster, lecz zanim bΩdzie mo┐na j▒ odebraµ, trzeba siΩ
zalogowaµ. Jest to zrobione nastΩpuj▒co:
Set cdoSesja =
Server.CreateObject("CDONTS.Session")
cdoSesja.LogonSMTP "webmaster",
"webmaster@domena.pl" |
Nale┐y zauwa┐yµ, ┐e jest to rozwi▒zanie ma│o bezpieczne,
dlatego te┐ jest mo┐liwe do zrealizowania tylko lokalnie. NastΩpnym
krokiem jest otwarcie folderu Inbox oraz pobranie
zbioru Messages (wiadomo╢ci):
Set poczta = cdoSesja.Inbox
Set wiadomosci = poczta.Messages |
Poniewa┐ oba elementy s▒ obiektami, nale┐y u┐yµ komendy Set
w celu przypisania ich do zmiennych lokalnych. Teraz nale┐a│oby
pobraµ wszystkie wiadomo╢ci znajduj▒ce siΩ w skrzynce (Inbox)
u┐ytkownika webmaster. W pierwszej czΩ╢ci jest pobierana i wy╢wietlana
lista wszystkich wiadomo╢ci (linie 17-25). Warunkiem wykonania
tej operacji jest brak warto╢ci parametru wiadId
(linia 16), czyli nie zosta│a wybrana ┐adna konkretna wiadomo╢µ.
Zmienna wiadId w naszym przyk│adzie jest
identyfikatorem wybranej wiadomo╢ci. Do odebrania informacji na
temat wszystkich wiadomo╢ci u┐yta zosta│a pΩtla For
... Each. W pΩtli generowane s▒ odsy│acze zawieraj▒ce
temat wiadomo╢ci i jego nadawcΩ. W momencie klikniΩcia na odsy│aczu,
warunek w instrukcji If (linia 17) przyjmie warto╢µ
FALSE i zostan▒ wykonane rozkazy w liniach 27-30, kt≤re
spowoduj▒ wy╢wietlenie wybranej wiadomo╢ci z wiΩksz▒ ilo╢ci▒
szczeg≤│≤w, tj. temat, nadawca, tre╢µ wiadomo╢ci. Linia:
Set wiadomosc = wiadomosci(wiadId) |
tworzy obiekt odnosz▒cy siΩ do jednej tylko wiadomo╢ci
(wybranej wiadomo╢ci). W linii 32, tj:
nastΩpuje wylogowanie siΩ z us│ugi SMTP i zako±czenie obs│ugi
poczty przychodz▒cej.
Kurs pochodzi z
serwisu Programowanie wg Stelmika republika.pl/stelmik
|