kurs5 (2)








Wysyłanie i odbieranie poczty e-mail.



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
omawiane. 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:



Set MojaPoczta = Nothing



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łego 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:



Join(wsOsoby, ";")



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:



cdoSesja.Logoff



następuje wylogowanie się z usługi SMTP i zakończenie obsługi poczty
przychodzącej.






Autor: Krzysztof Stelmach
Strona pochodzi z http://www.asp.z.pl/


Plik został ściągnięty ze strony www.programisty.prv.pl







Wyszukiwarka

Podobne podstrony:
Asembler w TSR KURS5
KURS5
kurs5

więcej podobnych podstron