Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Expedierea si receptionarea mesajelor de posta electronica in PHP
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

<titlu>Expedierea si receptionarea mesajelor de posta electronica</titlu>

<titlu>Scopuri</titlu> u2x17xh
• invatati sa expediati mesaje de e-mail prin intermediu» proto¬colului SMTP
• invatati sa obtineti accesul la mesajele de e-mail rezidente pe un server IMAP
• invatati sa manipulati mesajele si dosarele IMAP

In cadrul acestui modul, este explicat modul de utilizare a limbajului PHP pentru a expedia, respectiv pentru a receptiona mesaje de e-mail. Pentru ca functionalitatile prezentate in acest modul sa fie utilizabile, serverul dumneavoastra PHP trebuie configurat astfel incat sa accepte IMAP. Mai mult, scripturile dumneavoastra PHP trebuie sa fie capabile de a obtine accesul la serviciile SMTP (Simple Mail Transfer Protocol) si IMAP (Interim Mail Access Protocol). Asadar, consultati-va cu adminis¬tratorul dumneavoastra de sistem inainte de a investi timp in depanarea exemplelor; problema o poate constitui serverul PHP, nu dumneavoastra sau exemplul prezentat.

<titlu>Expedierea mesajelor de posta electronica</titlu>
Configuratia PHP standard accepta expedierea mesajelor de e-mail prin intermediul SMTP (abreviere de la Simple Mail Transfer Protocol). Acesta este proto¬colul standard folosit pentru transferul mesajelor de e-mail de la un sistem la altul, prin intermediul Internetului.
Mesajele de e-mail sunt alcatuite din doua parti: o serie de antete de mesaj si un corp. Antetele de mesaj indica adresa destinatarului si subiectul mesajului, precum si alte informatii. Corpul contine mesajul in sine.
Pentru a expedia un mesaj de e-mail prin intermediul SMTP, invocati functia mail(), care are urmatoarea forma:

mail(destinatar, subiect, corp)

unde destinatar indica adresa de e-mail a destinatarului, subiect specifica antetul de e-mail care contine subiectul mesajului, iar corp este corpul mesajului. Se obisnu¬ieste ca adresele de e-mail sa includa si adresa de e-mail a expeditorului. Pentru a include adresa de e-mail a expeditorului, folositi urmatoarea forma a functiei mail:




mail(destinatar, subiect, corp, antete)

unde antete specifica adresele de e-mail suplimentare, precum antetul from:.

Iata un exemplu care prezinta modul de expediere a unui mesaj de e-mail, care contine un antet ce include adresa de e-mail a expeditorului:

mail(bill@osborne.com,
„Acesta este subiectul mesajului”,
„Acesta este corpul unui mesaj foarte scurt”,
„From: expeditor@osborne.com”)

Puteti specifica mai multi destinatari prin separarea fiecarui destinatar de urmatorul prin intermediul unei virgule:

mail(bill@osborne.com, bob@osborne.com,
„Acesta este subiectul mesajului”,
„Acesta este corpul unui mesaj foarte scurt”,
„From: expeditor@osborne.com”)

Functia mail() returneaza true daca serverul SMTP accepta mesajul; in caz contrar, returneaza false. Retineti ca acceptarea de catre serverul SMTP nu garan¬teaza transmiterea catre destinatar a mesajului dumneavoastra de e-mail. Nu exista nici o modalitate 100% sigura de a verifica faptul ca mesajul dumneavoastra a fost transmis, asa cum nu exista nici o modalitate absolut sigura de a garanta ca desti¬natarul a citit mesajul, la inteles si a fost de acord cu el.
Unele servere SMTP refuza sa accepte adrese si antete care contin spatii albe la sfarsit.Daca scriptul dumneavoastra presupune ca utilizatorul va introduce aceste valori trebuie sa invocati functia trim() avand valorile respective ca argument. De exemplu:

mail(trim($destinatar), trim($subiect), $corp,
„From: „ . trim($expeditor))

<Test „la minut">
• Care este functia PHP care trimite mesaje de posta electronica prin intermediul serviciului SMTP?
• Cand expediati mesaje de e-mail folosind PHP, care este caracterul folosit pentru a separa intre ele adresele mai multor destinatari? </Test „la minut">

<titlu>Proiect 12-1: Un script de trimitere a formularelor</titlu>
In cadrul acestui proiect, veti construi un script care aduna date dintr-un formular HTML si le trimite unui utilizator specificat, prin intermediul postei electronice. Scriptul este scris de asa maniera incat poate fi controlat folosind variabile de formular HTML. Puteti crea o diversitate de formulare HTML care folosesc scriptul, fara a fi necesara revizuirea scriptului.

<Nota>
Raspunsuri la test:
• mail()
• o virgula</Nota>

<Sfatul specialistului>
Intrebare: Este posibila utilizarea limbajului PHP pentru expedierea mesajelor de posta electronica in care sunt incluse fisiere atasate?
Raspuns: Da, dar biblioteca PHP nu include functii care faciliteaza aceasta operatie. Daca fisierul atasat nu este un fisier de tip text simplu, trebuie sa-1 codificati folosind formatul MIME (Multipurpose Internet Mail Extensions). Apoi, puteti incorpora in antete speciale datele codificate in format MIME. Diferiti programatori si autori au scris functii si clase PHP destinate a simplifica acest proces. Pentru a invata mai multe despre fisiere atasate si MIME, vizitati adresa https://wvwv.phpbuilder.com. </Sfatul specialistului>

<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de expediere a mesajelor de posta electronica folosind PHP
• Prezentarea modului de creare a unui script reutilizabil care prelucreaza datele din formularul HTML

<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit mailform.php si incarcati acest fisier in serverul dumneavoastra PHP:

<?php

$corp = „”; foreach ($http_POST_VARS as $nume=>$valoare)
A
$corp = $corp . „$nume=>$valoare\n”;
S mail($mailform_destinatar,$mailform_subiect, $corp,
„From: „ . $mailform_expeditor); header(„Location: $mailform_adresa”);

?>

2. Alocati un timp studiului scriptului PHP. Scriptul obtine acces la valorile campurilor din formular prin intermediul tabloului asociativ $HTTP_POST_VARS. Apoi, scriptul coma¬seaza valorile tuturor campurilor in variabila sir $corp, care este folosita pentru a stabili valoarea corpului mesajului de e-mail.
De asemenea, remarcati si celelalte variabile din formular, si anume $mailform_destinatar, $mailform_expeditor si $mailform_subiect. Stabilind valorile controalelor asociate ale formularului, puteti specifica adresa de e-mail a expeditorului si a destinatarului, precum si linia de subiect a mesajului de e-mail.
Observati ca scriptul foloseste functia PHP header(), care trimite browserului un antet HTTP. Antetul Location (locatie) determina browserul sa preia si sa afiseze documentul asociat cu adresa URL specificata. Adresa URL in sine este specificata de un camp ascuns al formularului HTML care trimite date scriptului. Prin stabilirea valorii acestui camp, puteti specifica pagina pe care o vede utilizatorul dupa ce datele din formular au fost prelucrate, in mod caracteristic, veti trimite utilizatorul la o pagina in care acestuia i se multumeste pentru datele introduse sau pentru tranzactie.

3. Plasati urmatoarea pagina HTML intr-un fisier denumit mailfrm1.html si incarcati acest fisier in serverul dumneavoastra, inserandu-l in acelasi catalog ca si fisierul mailform.php;

<HTML>
<HEAD>
<TITLE>mailfrm1.html</TITLE>
</HEAD>
<BODY>
<FORM METHOD=”POST” ACTION=”mailform.php”>

<H2>Formular de trimitere a datelor pentru e-mail</H2>
Introduceti aici datele dumneavoastra:
<BR>
<INPUT TYPE=”TEXT” NAME=”data” SIZE=”24”>
<BR><BR>
<INPUT TYPE=”SUBMIT” VALUE=”Trimite”>

<INPUT TYPE=”HIDDEN” NAME=”mailform_destinatar”
VALUE=bmccarty@apu.edu>
<INPUT TYPE=”HIDDEN” NAME=”mailform_expeditor”
VALUE=bmccarty@apu.edu>
<INPUT TYPE=”HIDDEN” NAME=”mailform_subiect”
VALUE=”Subiectul”>
<INPUT TYPE=”HIDDEN” NAME=”mailform_adresa”
VALUE=”mailfrm2.html”>

</FORM>
</BODY>
</HTML> HYPERLINK

4. Observati ca formularul HTML are un singur camp pentru introducerea datelor de catre utilizator, denumit data. Cu toate acestea, scriptul va prelucra toate campurile pe care doriti sa le definiti.
5. Plasati urmatoarea pagina HTML intr-un fisier numit mailfrm2.html si incarcati acest fisier in serverul dumneavoastra, inserandu-l in acelasi catalog ca si fisierul mailform.php:

<HTML>
<HEAD>
<TITLE>mailfrm2.html</TITLE>
</HEAD>
<BODY>
<H2>Mesaj receptionat</H2>
Multumim! Datele dumneavoastra au fost trimise!
</BODY>
</HTML>

6. Orientati un browser Web catre adresa URL a scriptului mailfrm1.html. Browserul afiseaza urmatorul ecran:
<ecran>
Email Data Subtnission Form
<camp>
Eoter your data here:
</camp>
<buton>
Submit
</buton>
</ecran>

7. Introduceti datele aferente formularului si executati clic pe butonul de trimitere. Browserul afiseaza ecranul alaturat:
<ecran>
Email Receipt
Thanks! Your data has been sent on its way!
</ecran>
8. Mesajul primit de destinatar este similar cu urmatorul listing:

Data: Sun, 15 Apr 2005 16:27:11 -;0700
Expeditor: bill@osborne.com
Destinatar: bill@osborne.com
Subiect: Subiectul

data=Acestea sunt datele pe care le-am introdus. mailform_destinatar=bill@osborne.com mailform_expeditor=bill@osborne.com mailform_subiect=Subiectul mailform_adresa=mailfrm2.html

<titlu>Receptionarea mesajelor de e-mail</titlu>
Aceasta sectiune trateaza elementele fundamentale ale procesului de receptionare prin intermediul IMAP, protocolul Interim Mail Access Protocol. Din pacate, recep¬tionarea mesajelor de e-mail este un proces oarecum mai complex decat expedierea lor; ca atare, aceasta sectiune este semnificativ mai lunga decat precedenta.
Mai mult, desi SMTP face parte din configuratia PHP standard, IMAP nu este o componenta a acestei configuratii. Deci, daca administratorul dumneavoastra PHP nu a configurat PHP astfel incat sa lucreze cu IMAP, exemplele din aceasta sectiune nu vor functiona.
<titlu>Deschiderea unei cutii postale</titlu>
Un server IMAP este accesibil in acelasi mod ca si un fisier oarecare. Mai intai, trebuie sa deschideti o conexiune cu serverul. Apoi, puteti trimite cereri serverului si puteti primi raspunsuri de la acesta. Cand ati terminat de utilizat serverul, trebuie sa inchideti conexiunea.
Pentru a deschide o conexiune cu un server IMAP, folositi functia imap_open(), care are urmatoarea forma:

imap_open(cutie_postala, identificator_utilizator, parola)

Argumentul numit cutie_postala specifica patru elemente informationale:
• Numele gazdei sau adresa IP a serverului IMAP
• Protocolul care va fi utilizat (IMAP)
• Portul care se va folosi pentru contactarea serverului (in general 143)
• Cutia postala care va fi deschisa (in general INBOX)

Argumentul foloseste numerosi delimitatori pentru a separa un element de altul. Iata o valoare caracteristica a argumentului:

Alocalhost/imap:143SINBOX

In cadrul acestui exemplu, numele gazdei este specificat sub forma localhost; acest lucru este posibil cand un server PHP si un server IMAP ruleaza pe acelasi sistem gazda. In caz contrar, trebuie sa specificati numele gazdei care ruleaza serverul IMAP. De exemplu:

Amail.osborne.com/imap:143SINBOX

Celelalte argumente ale functiei imap_open(), identificator_utilizator si parola, specifica identificatorul de utilizator si parola folosite pentru a obtine accesul la serverul IMAP. Asa cum functia fopen() returneaza un identificator pe care il puteti folosi pentru a obtine accesul la un fisier, functia imap_open() returneaza un identifi¬cator pe care il puteti folosi pentru a obtine accesul la serverul IMAP. Daca PHP nu poate deschide o conexiune cu serverul IMAP, functia imap_open() returneaza false.
<Sugestie>
Daca un script se incheie cu mesajul „Call to undefined function*: imap_open", aceasta arata ca PHP nu a fost configurat pentru a folosi IMAP. Luati legatura cu administratorul dumneavoastra de sistem, pentru a beneficia de asistenta in rezolvarea acestei probleme.
Iata un exemplu care prezinta modul de invocare a functiei imap_open() si testarea rezultatului returnat de functie:

function open_mailbox**($server, $identificator_utilizator, $parola)
A echo “\n\n”; echo ”<H4>Deschide conexiunea IMAP cu $server.</H4>”;
$identificator = imap_open($server . “INBOX”,
$identificator_utilizator, $parola); if ($identificator === false)
A echo “Nu s-a putut deschide cutia postala IMAP INBOX.”; print_error_stack(); die();
S return $identificator;
S

Exemplul este prezentat sub forma unei functii definite de utilizator, denumita open_mailbox(). Puteti folosi aceasta functie in propriile dumneavoastra scripturi PHP. Functia open_mailbox() genereaza date de iesire care va vor ajuta sa fiti la

<nota>
*In traducere apel la o functie nedefinita-N.T.
**In traducere deschide cutia postala - N.T. </nota>

curent cu actiunile programului dumneavoastra. De asemenea, se executa o verifi¬care a aparitiei erorilor. Veti economisi un oarecare volum de munca daca apelati functia open_mailbox() in loc sa apelati direct functia imap_open(). Desigur, daca datele generate de functia open_mailbox() sau modalitatea de verificare a aparitiei erorilor nu va satisfac, le puteti modifica, va puteti scrie propria dumneavoastra functie definita de utilizator sau apelati direct functia imap_open().

<Sugestie >

Daca nu va mai amintiti foarte exact de functiile PHP definite de utilizator, trebuie sa treceti din nou in revista Modulul 7. </Sugestie >

Observati ca functia open_mailbox() apeleaza functia print_error_stack*() daca apelul la functia imap_open() esueaza. Functia print_error_stack() este o alta functie definita de utilizator. Iata care este definitia acesteia:

function print_error_stack()
A echo “\n\n”; echo “<H4>Stiva de erori IMAP</H4>”;
$erori = imap_errors(); if $(erori)
A

foreach ($erori as $cheie=>$valoare)
A echo “\n$cheie: $valoare”;
S
S
S

Functia apeleaza functia de biblioteca IMAP imap_errors(), care returneaza un tablou care contine mesaje de eroare. Apoi, functia parcurge iterativ tabloul, folo¬sind o instructiune foreach, care afiseaza fiecare eroare.

<titlu>Comutarea intre dosare</titlu>
In afara de dosarul INBOX standard, IMAP permite unui utilizator sa defineasca dosare, care pot fi folosite de acesta din urma pentru stocarea si organizarea mesa¬jelor primite, in orice moment, un dosar IMAP - INBOX sau un alt dosar - este considerat ca fiind dosarul curent. Dupa ce ati stabilit o conexiune cu un server IMAP, puteti cere serverului sa desemneze alt dosar ca dosar curent. Iata o functie definita de utilizator care va permite sa procedati astfel:

function switch_to_folder**($identificator, $server, $prefix, $dosar)
A if ($dosar = = „INBOX”)

<nota>
*In traducere afiteasp stiva cu erori - N.T.
**In traducere comuta la dosar— N.T. </nota>

A
$dosar = $server . „INBOX”;
S else
A
$dosar = $server . $prefix . „INBOX.” . $dosar;
S echo „\n\n”; echo „<H4>Comuta in dosarul $dosar</H4>”;
$ok = imap_reopen($identificator, $dosar); if ($ok === false)
A echo „\nNu a putut deschide dosarul specificat.”; print_error_stack();
S
S

Functia definita de utilizator invoca functia IMAP imap_reopen(), care preia doua argumente: identificatorul returnat de functia imap_open() (sau de catre functia definita de utilizator open_mailbox(), care apeleaza functia imap_open()) si numele dosarului care urmeaza a fi deschis. Functia definita de utilizator preia, in afara de identificator, numeroase alte argumente, pe care le foloseste pentru a alcatui numele dosarului. Puteti apela functia switch_to_folder() astfel:

switch_to_folder(„Alocalhost/imap:143S”, “I/mail/”,”dosarul”)

<Remarca>
De obicei, numele dosarelor IMAP sunt obtinute prin prefixarea numelui dosarului cu particula "-/mail/" si "INBOX", asa cum o presupune functia switch_to_folder() si invocarea data ca exemplu. Cu toate acestea, un administrator de sistem poate configura o alta politica de atribuire a numelor. Daca aveti o problema cu utilizarea functiei switch_to_folder(), luati legatura cu administratorul dumneavoastra de sistem, pentru a determina politica adecvata de denumire a dosarelor. </Remarca>

<titlu>Inchiderea unei cutii postale</titlu>
Cand ati terminat de utilizat un server IMAP, trebuie sa il inchideti, asa cum inchideti un fisier atunci cand ati finalizat utilizarea acestuia. Iata o functie definita de utilizator pentru inchiderea unei conexiuni IMAP:

function close_mailbox($identificator)
A echo „\n\n”; echo „<H4>Inchide conexiunea IMAP</H4>”;
$ok = imap_close($identificator); if ($ok === false)
A echo „\nNu a reusit sa inchida cutia postala.”; print_error_stack();
S
S

Functia foloseste functia din biblioteca IMAP imap_close() si functia definita de utilizator print_error_stack() care a fost prezentata anterior.

<titlu>Obtinerea informatiilor referitoare la o cutie postala</titlu>
Dupa deschiderea unei conexiuni IMAP, puteti obtine acces la informatii care descriu cutia postala curenta. De exemplu, iata o functie definita de utilizator care returneaza numarul mesajelor din cutia postala curenta:

function get_message_count*($identificator)
A return imap_num_msg($identificator);
S

Functia definita de utilizator nu face decat sa apeleze functia din biblioteca IMAP imap_num_msg (). Totusi, puteti adauga linii de program suplimentare la functia definita de utilizator; de exemplu, puteti adauga o instructiune care afiseaza numarul de mesaje.
Iata o functie definita de utilizator mai complexa, care afiseaza o varietate de informatii referitoare la cutia postala curenta:

function print_mailbox_status**($identificator)
A echo „\n\n”; echo „<H4>Starea cutiei postale</H4>”;
$n = imap_num_msg($identificator); echo „\nCutia postala contine $n mesaje.”;

$n = imap_num_recent($identificator); echo „\nCutia postala contine $n mesaje.”;

echo „\n\n”;
$obiect_cutie_postala = imap_mailboxmsginfo($identificator); if ($obiect_cutie_postala)
A
$tablou_cutie_postala = get_object_vars($obiect_cutie_postala); foreach ($obiect_cutie_postala as $cheie=>$valoare)
A echo „\n$cheie: $valoare”;
S
S
S

Aceasta functie afiseaza numarul mesajelor si pe acela al mesajelor recente din cutia postala. Apoi, functia afiseaza o varietate de informatii, inclusiv:
• Data ultimei modificari a cutiei postale
• Numele cutiei postale

<Nota>
*In traducere obtine numarul de mesaje - N.T.
** In traducere afiseaza starea cutiei postale - N.T.

• Numarul mesajelor din cutia postala
• Numarul mesajelor recente din cutia postala
• Numarul mesajelor necitite din cutia postala
• Numarul mesajelor sterse din cutia postala
• Dimensiunea cutiei postale, in octeti

Observati functia de biblioteca IMAP imap_mailboxmsginfo(), care returneaza o valoare atribuita obiectului $obiect_cutie_postala. Aceasta valoare este de tip obiect. Modulul 15 va aborda obiectele si modul de utilizare a acestora. Totusi, nu trebuie sa cunoasteti modul de lucru cu obiectele pentru a folosi aceasta valoare. Prin transferul valorii ca argument al functiei get_object_vars(), aceasta returneaza un tablou asociativ care contine datele obiectului. Functia definita de utilizator print_mailbox_status() foloseste aceasta tehnica pentru a obtine si a afisa informatii referitoare la starea cutiei postale.
Iata un rezultat caracteristic al functiei print_mailbox_status():

Starea cutiei postale
INBOX contine 3 mesaje
INBOX contine 0 mesaje recente

Unread: 0
Deleted: 0
Nmsgs: 3
Size: 1078
Date: Fri, 25 May 2001 08:57:53 -;0700 (PDT)
Driver: imap
Mailbox: Alocalhost.localdomain:143/imap/user=”bmccarty”SINBOX
Recent: 0

Functia definita de utilizator dump_mailbox_status() prezinta o alta metoda de abordare a functiei imap_mailboxmsginfo():

function dump_mailbox_status($identificator)
A echo „\n\n”; echo „<H4>Afisarea starii cutiei postale</H4>”; echo „\n\n”;
$obiect_cutie_postala = imap_mailboxmsginfo($identificator); print_r($obiect_cutie_postala);
S

Functia PHP print_r() afiseaza valoarea unui obiect. Aceasta metoda este cu mult mai simpla decat cea folosita de functia print_mailbox_status(), dar formatul datelor de iesire este cu mult mai putin inteligibil:

Afisarea starii cutiei postale stdClass 0object
(
aUnreadi => 0
aDeletedi => 0
aNmsgsi => 3

aSizei => 1078
aDatei => Fri, 25 May 2001 08:57:53 -;0700 (PDT)
aDriveri => imap
aMailboxi => Alocalhost.localdomain:143/imap/user=”bmccarty”SINBOX
aRecenti => 0
)

<Sugestie>
Motivul pentru care prezentam functiile IMAP in asociere cu functiile definite de utiliza¬tor este acela ca functiile definite de utilizator servesc drept instrumente de constructie a unui program IMAP. Functiile definite de utilizator genereaza date de iesire si mesaje de eroare care va ajuta sa stabiliti o logica adecvata a programului dumneavoastra. Dupa ce, in esenta, programul a ajuns sa realizeze ceea ce doriti dumneavoastra, puteti ajusta functiile definite de utilizator pentru a elimina datele de iesire, pentru a le re-formata sau orice altceva. O modificare pe care trebuie sa o aveti in vedere consta in prefixarea apelurilor de functii cu un caracter @, pentru ca mesajele de eroare prestabilite sa nu va „strice" paginile in cazul aparitiei unor probleme. </Sugestie>

<titlu>Obtinerea unei liste de mesaje</titlu>
Iata o functie definita de utilizator care afiseaza o lista de mesaje in dosarul curent:

function list_messages($identificator)
A echo „\n\n”; echo „<H4>Antete de mesaje in cutia postala curenta</H4>”;
$antete = imap_headers($identificator); if ($antete == false)
A echo „\nNu a reusit sa afiseze mesajele.”; print_error_stack();
S else
A foreach ($antete as $cheie=>$valoare)
A echo „\n$valoare”;
S
S
S

Functia definita de utilizator apeleaza functia IMAP imap_headers(), care returneaza un tablou unde fiecare element descrie un mesaj din dosarul curent.

<Nota>
In traducere ofiseaza mesaje - N.T. </Nota>

<titlu>Lucrul cu identificatori de mesaje</titlu>
O ciudatenie a serviciului IMAP consta in aceea ca fiecare mesaj dintr-un dosar are atat un numar, cat si un identificator. Numarul reprezinta pozitia mesajului in dosarul respectiv; aceasta valoare se poate modifica la adaugarea mesajelor, respec¬tiv la stergerea mesajelor din dosar. Pe de alta parte, identificatorul unui mesaj nu se modifica niciodata.
IMAP furnizeaza functii care va permit sa determinati identificatorul unui mesaj daca este dat numarul sau si invers. Iata functiile definite de utilizator care invoca functiile de biblioteca IMAP conexe:

function get_message_id*($identificator, $numar)
A return imap_uid($identificator, numar)
S function get_message_num**($identificator, $id)
A return imap_msgno($identificator, $id)
S

<titlu>Obtinerea de informatii referitoare la un mesaj</titlu>
O limitare a functiei imap_headers(), folosita in functia definita de utilizator list_messages(), este aceea ca nu separa fiecare caracteristica a mesajului in campuri distincte, astfel incat acestea sa fie usor accesibile pentru un script. Functia de biblioteca IMAP imap_fetch_overview() returneaza un tablou asociativ care descrie un mesaj. Iata o functie definita de utilizator, care foloseste functia imap_fetch_overview() pentru a afisa informatiile despre mesaje:

function print_overview***($identificator, $numar)
A echo „\n\n”; echo „<H4>Mesaj $n: Vedere de ansamblu</H4>”;
$nr_mesaj = „” . $numar;
$mesaje = imap_fetch_overview($identificator, $nr_mesaj, 0); foreach ($mesaje as $mesaj)
A
$n = $mesaj->msgno; foreach ($mesaj as $proprietate=>$valoare)
A echo „\n$proprietate: $valoare;”
S
S
S

<Nota>
*In traducere obtine identificatorul mesajului - N.T.
**In traducere obtine numarul mesajului - N.T.
***In traducere afiseaza vederea de ansamblu - N.T. </Nota>

Al doilea argument al functiei imap_fetch_overview() va permite sa specificati o lista sau un domeniu de mesaje pentru care functia returneaza vederi de ansamblu. Functia definita de utilizator print_overview() alcatuieste o lista cu un singur membru si transmite lista functiei imap_fetch_overview().
Datele de iesire contin urmatoarele informatii:
• Subiectul mesajului
• Numele si adresa de e-mail ale expeditorului
• Data la care a fost trimis mesajul
• Numarul mesajului

• Identificatorul mesajului
• Dimensiunea mesajului (in octeti)
• Indicatoare care precizeaza daca:
- Mesajul este recent
- Mesajul a fost citit
- Mesajul a primit un raspuns
- Mesajul a fost marcat in vederea stergerii
- Mesajul este o ciorna
- Mesajul este o ciorna

<titlu>Obtinerea corpului unui mesaj</titlu>
Corpul unui mesaj include continutul efectiv al mesajului. Iata o pereche de functii definite de utilizator care afiseaza corpul mesajului:

function print_body_by_num*($identificator, $numar)
A
$id = get_message_id($identificator, $numar); print_body_id($identificator, $id);
S function print_body_by_id**($identificator, $numar)
A echo „\n\n”;
$numar = get_message_num($identificator, $id);
$echo „<H4>Message ID $id(Number $numar) Body</H4>”;
$s = imap_body($identificator, $id, FT_UID); echo „\n$s”;
S

Una dintre functii va permite sa specificati mesajul in functie de numarul mesajului, iar cealalta va permite sa specificati mesajul in functie de identificatorul acestuia. Remarcati modul de implementare a functiei print_body_by_num(). Aceasta converteste numarul mesajului intr-un identificator de mesaj si apoi apeleaza functia sa geamana, in speta print_body_by_id(), care la randul sau apeleaza functia IMAP imap_body().

<nota>
* In traducere afiseaza corpul in functie de numar - N.T.
** In traducere afiseaza corpul in functie de identificator - N.T. </nota>

<titlu>Obtinerea antetelor de mesaj</titlu>
Antetele de mesaj contin informatii importante, care in general nu apar in corpul mesajului, precum data si subiectul mesajului. Iata o functie definita de utilizator care afiseaza antetele unui mesaj, daca este dat numarul mesajului:

function print_headers*($identificator, $numar)
A echo „\n\n”; echo „<H4>Mesaj $n: Antete</H4>”;
$obiect_antet = imap_headerinfo($identificator, $numar);
$antete = get_object_vars($obiect_antet); foreach ($antete as $proprietate=>$valoare)
A if (!is_array($valoare))
A echo "\n$proprietate: $valoare”;
S else
A foreach ($valoare as $sub_valoare)
A echo "\n$proprietate: ”;
$sub_valori = get_object_vars($sub_valoare); foreach ($sub_valoare as $articol=>$valoare_articol)
A echo „\n $articol=>$valoare_articol”;
S
S
S
S
S

Similar functiei definite de utilizator print_mailbox_status(), functia print_headers() foloseste functia get_object_vars() pentru a converti un obiect intr-un tablou asociativ. Obiectul returnat de functia de biblioteca IMAP imap_headerinfo() include urmatoarele informatii:
• Data expedierii mesajului
• Subiectul mesajului
• Identificatorul mesajului la care s-a raspuns prin acest mesaj, daca exista
• Indicatoare de mesaj, cum sunt cele returnate de functia imap_fetch_overview()
• Numele si adresa de e-mail ale:
- Expeditorului
- Persoanei care primeste raspunsul, daca este specificata
- Destinatarilor
- Destinatarilor eventualelor copii (cc:)
- Destinatarilor eventualelor copii la indigo necunoscute (bcc:), daca informatiile respective sunt disponibile
<nota>
*In traducere afiseaza antetele — N.T. </nota>

Numeroase elemente ale tabloului asociativ au valori de tip tablou. Pentru parcur¬gerea iterativa si afisarea valorii acestor elemente se foloseste o bucla imbricata.
Pentru aplicatii mai putin pretentioase, functia dump_headers() formateaza aceleasi date de iesire ca si print_headers(), dar foloseste pentru aceasta functia print_r(), generand astfel date de iesire mai putin inteligibile:

function dump_headers($identificator, $numar)
A
$antete = imap_headerinfo($identificator, $numar); echo „\n\n”; echo „<H4>Mesaj $n: Afisare antete</H4>”; print_r($antete);
S

<titlu>Marcarea unui mesaj in vederea stergerii</titlu>
Pentru a sterge un mesaj IMAP, mai intai il marcati in vederea stergerii si apoi il eliminati. Mesajele marcate pentru stergere, dar care nu au fost inca eliminate, sunt numai semnalate ca sterse si sunt in continuare accesibile.
Iata diferite functii definite de utilizator care va permit sa stergeti un mesaj prin specificarea numarului sau a identificatorului mesajului:

function delete_message_by_num*($identificator, $numar)
A
$id = get_message_id($identificator, $numar); delete_message_by_id**($identificator, $id);
S function delete_message_by_id($identificator, $id)
A echo „\n\n”;
$numar = get_message_num($identificator, $id); echo „<H4>Marking Message ID $id(Numar $numar) for deletion</H4>”;
$ok = imap_delete($identificator, $id, FT_UID); if ($ok == false)
A echo „\nNu s-a reusit stergerea mesajului.”; print_error_stack();
S
S

Pentru a elimina mesajele sterse, invocati urmatoarea functie definita de utilizator:

function expunge_messages***($identificator)
A echo „\n\n”; echo „<H4>Elimina mesajele sterse</H4>”;
$ok = imap_expunge($identificator); if ($ok == false)

<nota>
* In traducere sterge mesajul in functie de numar - N .T.
** in traducere sterge mesajul in functie de identificator - N.T.
***in traducere elimina mesaje — N.T. </nota>

A echo „\nNu s-a reusit eliminarea mesajelor.”; print_error_stack();
S
S

<Sfatul specialistului>
Intrebare:Furnizorul meu de servicii Internet dispune de un server POP, nu de un server IMAP. Pot avea acces la cutia mea postala POP cu ajutorul sistemului PHP?
Raspuns:Da. De fapt, puteti avea acces la cutia postala folosind biblioteca IMAP. Pur si simplu deschideti o conexiune cu serverul POP specificand o cutie postala POP, astfel:
$mbox = imap_open("Alocalhost/pop3:110SINBOX", $identificator_utilizator, $parola);
Numele gazdei, protocolul si numarul portului sunt asemanatoare cu valorile similare folosite pentru conectarea la un server IMAP. Ca si in cazul unui server IMAP, poate ca este necesara modificarea numelui cutiei postale, pentru ca acesta sa se conformeze politicilor stabilite de catre administratorul de sistem.
De asemenea, puteti folosi biblioteca IMAP pentru a va conecta la un server de informatii folosind NNTP (Network News Transfer Protocol). Pentru aceasta, deschideti o conexiune astfel:
$nntp = imap_open(nAlocalhost/nntp:119Scoinp.test", „”, „”);
Consultati manualul PHP pe suport electronic la adresa https://www.php.net pentru mai multe informatii despre utilizarea functiilor din biblioteca IMAP pentru a obtine accesul la un server POP sau la un server de informatii. </Sfatul specialistului>

<Test „la minut">
• Ce trebuie sa faceti inainte de a obtine accesul la o cutie postala IMAP?
• Cand sunt marcate pentru stergere, mesajele IMAP dispar sau nu?
• Care din cei doi identificatori este mai durabil: un numar de mesaj IMAP sau un identificator de mesaj?
• Care sunt informatiile incluse intr-un antet de mesaj e-mail? </Test „la minut">

<nota>
Raspunsuri la test:
• Deschideti o conexiune cu serverul IMAP.
• Nu. Mesajele IMAP raman in dosar pana cand sunt eliminate.
• Identificatorul de mesaj este mai durabil.
• Data la care a fost trimis mesajul, subiectul mesajului, identificatorul mesajului la care s-a ras¬puns prin mesajul curent (daca exista), indicatoare (flag) de mesaj, respectiv numele si adresele de e-mail ale persoanelor vizate de mesajul e-mail, si anume expeditorul si destinatarul. </nota>

<titlu>Proiect 12-2: Un program de navigare pentru posta electronica</titlu>
In cadrul acestui proiect, veti construi un script care va permite sa parcur¬geti un dosar IMAP.
<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de invocare a functiilor IMAP prin intermediul functiilor definite de utilizator amintite in acest modul
• Prezentarea modului de acces la dosarele si mesajele IMAP
<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit cititor.php si incarcati acest fisier in serverul dumneavoastra PHP:

<?php require("cititor.inc");

echo "<PRE>";

$server = "A" . $gazda . "/imap:143S";
$imap = open_mailbox($server, $id_utilizator, $parola); list_messages($imap);
$n = get_message_count($imap); for ($i = 1; $i <= $n; $i++)
A print_headers($imap, $i); print_body_by_num($imap, $i);
S close_mailbox($imap);

echo "</PRE>";

2. Plasati urmatorul script PHP (cam lung) intr-un fisier denumit cititor.inc si incarcati acest fisier in serverul dumneavoastra, inserandu-l in acelasi catalog ca si fisierul cititor.php:

function open_mailbox ($server, $identificator_utilizator, $parola)
A echo “\n\n”; echo ”<H4>Deschide conexiunea IMAP cu $server.</H4>”;
$identificator = imap_open($server . “INBOX”, $identificator_utilizator, $parola); if ($identificator === false)
A echo “Nu s-a putut deschide cutia postala IMAP INBOX.”; print_error_stack(); die();
S return $identificator;
S

function print_error_stack()
A echo “\n\n”; echo “<H4>Stiva de erori IMAP</H4>”;

$erori = imap_errors(); if $(erori)
A foreach ($erori as $cheie=>$valoare)
A echo “\n$cheie: $valoare”;
S
S
S

function list_messages($identificator)
A echo „\n\n”; echo „<H4>Antete de mesaje in cutia postala curenta</H4>”;
$antete = imap_headers($identificator); if ($antete == false)
A echo „\nNu a reusit sa afiseze mesajele.”; print_error_stack();
S else
A foreach ($antete as $cheie=>$valoare)
A echo „\n$valoare”;
S
S
S

function get_message_count($identificator)
A return imap_num_msg($identificator);
S

function print_headers($identificator, $numar)
A echo „\n\n”; echo „<H4>Mesaj $n: Antete</H4>”;
$obiect_antet = imap_headerinfo($identificator, $numar);
$antete = get_object_vars($obiect_antet); foreach ($antete as $proprietate=>$valoare)
A if (!is_array($valoare))
A echo "\n$proprietate: $valoare”;
S else
A foreach ($valoare as $sub_valoare)
A echo "\n$proprietate: ”;
$sub_valori = get_object_vars($sub_valoare); foreach ($sub_valoare as $articol=>$valoare_articol)
A echo „\n $articol=>$valoare_articol”;
S

S
S
S
S

function print_body_by_num ($identificator, $numar)
A
$id = get_message_id($identificator, $numar); print_body_id($identificator, $id);
S

function print_body_by_id ($identificator, $numar)
A echo „\n\n”;
$numar = get_message_num ($identificator, $id);
$echo „<H4>Message ID $id(Number $numar) Body</H4>”;
$s = imap_body($identificator, $id, FT_UID); echo „\n$s”;
S

function get_message_id ($identificator, $numar)
A return imap_uid($identificator, numar)
S

function get_message_num ($identificator, $id)
A return imap_msgno($identificator, $id)
S

function close_mailbox($identificator)
A echo „\n\n”; echo „<H4>Inchide conexiunea IMAP</H4>”;
$ok = imap_close($identificator); if ($ok === false)
A echo „\nNu a reusit sa inchida cutia postala.”; print_error_stack();
S
S

3.Plasati urmatoarea pagina HTML intr-un fisier numit cititor.html si incarcati acest fisier in serverul dumneavoastra PHP, inseranddu-l in acelasi catalog ca si scriptul cititor.php si cititor.inc:

<HTML>

<HEAD>
<TITLE>cititor.html</TITLE>
</HEAD>
<BODY>
<FORM METHOD =”POST” ACTION=”cititor.php”>

<H2>Formular de acces la cutia postala IMAP</H2>
Identificator de utilizator:
<BR>
<INPUT TYPE=”TEXT” NAME=”idutilizator” SIZE=”24”>

<BR>
Parola:
<BR>
<INPUT TYPE=”PASSWORD” NAME=”parola” SIZE=”24”>
<BR>
Server:
<BR>
<INPUT TYPE=”TEXT” NAME=”gazda” SIZE=”24” VLUE=”localhost”>
<BR><BR>
<INPUT TYPE=”SUBMIT” VALUE=”trimite”>

</FORM>
</BODY>
</HTML>

4. Alocati un timp studiului paginii HTML cititor.html. Observati ca utilizatorului ii este permis sa specifice informatiile minime necesare pentru a obtine accesul la o cutie postala IMAP: numele gazdei serverului IMAP, precum si identificatorul de utilizator si parola utilizatorului.
5. Alocati un timp studiului scriptului PHP cititor.php. Remarcati simplitatea scriptului. Acesta:
• Deschide o conexiune cu serverul IMAP
• Afiseaza mesajele din dosarul prestabilit
• Obtine numarul mesajelor din dosarul prestabilit
• Afiseaza antetul si corpul fiecarui mesaj
• Inchide conexiunea cu serverul IMAP
Observati ca scriptul foloseste o instructiune require pentru a incorpora continutul fisierului cititor.inc.
6. Alocati un timp studiului scriptului PHP cititor.inc. Observati ca acest script este alcatuit numai dintr-o colectie de functii definite de utilizator, prezentate anterior in cadrul capitolului de fata. Nici una dintre functii nu a suferit modificari. Daca stiti care este utilitatea functiilor respective, atunci acest script nu trebuie sa va preocupe prea mult; puteti intelege aplicatia studiind scriptul cititor.php.
Ca ajutor pentru redactarea propriilor dumneavoastra scripturi de e-mail, situl Web aferent acestei carti include fisierul imap.inc, care contine toate functiile definite de utilizator date in acest modul. Pur si simplu inserati o copie a acestui fisier in catalogul dumneavoastra de scripturi, scrieti o instructiune require prin care incorporati acest script in propriul dumneavoastra script, dupa care apelati functiile definite de utilizator pe care le defineste scriptul.
7. Orientati un browser Web spre adresa URL a paginii Web cititor.html. Browserul va afisa un ecran similar cu ilustratia alaturata:
<ecran>
IMAP Mailbox Access Form

<campuri>
UserID:mccartyb
Password:*********
Server: localhost
</campuri>
<buton>
Submit
</buton>
</ecran>

8. Introduceti informatiile adecvate pentru serverul dumneavoastra IMAP si executati clic pe butonul „Trimite". Scriptul trebuie sa aiba acces la cutia dumneavoastra postala IMAP si trebuie sa-i afiseze caracterele. Rezultatul trebuie sa fie asemanator cu datele prezentate in ilustratia urmatoare:

<ecran>
Opening IMAP connection to Alocalhost:143S.
Message Headers in INBOX
1) 14-Apr-2001 Bill McCatty test l (370 chars)
D 2) 15-Apr-2001 Bill McCarty test 16 (354 Chats)
D 3) 15-Apr-2001 Bill McCarty test 17 (354 chars)

Message : Headers

date: Sat, 14 Apr 2001 09:20:52 -0700
Date: Sat, 14 Apr 2001 09:20:52 -0700 subject: test l
Subject: test l message_id: 200104141620.JAA20319@linux.dtc.apu.edu
</ecran>

<titlu>Manipularea dosarelor</titlu>
Dincolo de accesul la dosare si mesaje, puteti manipula dosare prin utilizarea bibliotecii IMAP. In aceasta sectiune veti afla cum trebuie sa procedati.
<titlu>Afisarea dosarelor existente</titlu>
Iata o functie definita de utilizator care afiseaza dosarele IMAP disponibile:

function list_folders* ($identificator, $server, $prefix)
A echo „\n\n”; echo „<H4>Lista dosarelor</H4>”; echo „\nserver=$server, prefix=$prefix”;
$dosare = imap_listmailbox($identificator, $server, $prefix, „*”);

if ($dosare == false)
A echo „\nFunctia imap_listmailbox() a esuat.”
S else
A foreach ($dosare as $cheie=>$valoare)
A echo „\n$cheie=>$valoare”;
S
S
S

Puteti apela aceasta functie folosind argumente asemanatoare cu urmatorul:

list_folders($identificator, „Alocalhost/imap:143S”, „I/mail/”)

<nota>
*In traducere afiseaza dosarele — N.T. </nota>

Argumentul $identificator este, desigur, valoarea returnata de functia care a deschis conexiunea IMAP. Asa cum s-a explicat anterior in acest modul, valoarea argumentului $prefix trebuie sa se conformeze politicii de denumire a dosarelor stabilite de administratorul IMAP.

<titlu>Crearea unui dosar</titlu>
Iata cum se poate crea un nou dosar IMAP:

function create_folder*($identificator, $server, $prefix, $dosar);
A
$dosar = $server . $prefix . „INBOX.” . $dosar; echo „\n\n”; echo „<H4>Creeaza dosarul $dosar</H4>”;
$ok = imap_createmailbox($identificator, $dosar); if ($ok === false)
A echo „\nNu s-a putut crea dosarul.”; print_error_stack();
S
S

Cel de-al patrulea argument al acestei functii specifica numele dosarului care va fi creat.
<Sugestie>
Numele unui dosar IMAP trebuie sa contina numai litere, cifre si caractere de subliniere. Daca doriti sa creati un sub-dosar, puteti proceda astfel incluzand un punct in numele dosarului. Punctul se comporta ca separator de cale, analog caracterului slash folosit in caile din cadrul sistemului de fisiere. </Sugestie>

<titlu>Modificarea numelui unui dosar</titlu>
Iata o functie definita de utilizator care modifica numele unui dosar:

function rename_folder**($identificator, $server, $prefix, $dosar_vechi, $dosar_nou);
A
$dosar_vechi = $server . $prefix . „INBOX.” . $dosar_vechi;
$dosar_nou = $server . $prefix . „INBOX.” . $dosar_nou; echo „\n\n”; echo „<H4>Modifica numele $dosar_vechi in $dosar_nou</H4>”;
$ok = imap_renamemailbox($identificator, $dosar_vechi, $dosar_nou); if ($ok === false)
A echo „\nNu a reusit sa modifice numele dosarului.”; print_error_stack();
S
S

<nota>
*In traducere creeaza dosarul- N.T.
**In traducere modifica numele dosarului — N.T. </nota>

Asa cum s-a explicat anterior, poate fi necesara ajustarea modului de construire a numelui dosarului din numele gazdei serverului si din prefixul cutiei postale.

<titlu>Stergerea unui dosar</titlu>
Iata o functie care sterge un dosar IMAP:

function delete_folder*($identificator, $server, $prefix, $dosar);
A
$dosar = $server . $prefix . „INBOX.” . $dosar; echo „\n\n”; echo „<H4>Sterge dosarul $dosar</H4>”;
$ok = imap_deletemailbox($identificator, $dosar); if ($ok === false)
A echo „\nNu s-a putut sterge dosarul.”; print_error_stack();
S
S

<Atentie>
Spre deosebire de mesajele IMAP, care raman in cutia postala pana cand le stergeti, un dosar IMAP sters este eliminat imediat si in mod irevocabil. Fiti atent atunci cand scrieti programe care sterg dosare sau atunci cand folositi scripturi care contin asemenea programe. </Atentie>

<titlu>Copierea mesajelor intr-un dosar</titlu>
IMAP poate copia un mesaj din dosarul curent intr-un alt dosar. Iata o functie definita de utilizator care executa aceasta operatie, daca se cunoaste numarul mesa¬jului IMAP si dosarul destinatie:

function copy_message**($identificator, $prefix, $numar, $dosar);
A
$dosar = $prefix . „INBOX.” . $dosar; echo „\n\n”; echo „<H4>Copiaza mesajul $numar in dosarul $dosar</H4>”;
$nr_mesaje = „” . $numar;
$ok = imap_mail_copy($identificator, $nr_mesaje, $dosar); if ($ok === false)
A echo „\nNu a fost copiat mesajul in dosarul specificat.”; print_error_stack();
S
S

Remarcati ca aceasta functie nu preia un argument care specifica numele gazdei serverului. Deoarece serverele IMAP nu coopereaza la copierea unui mesaj de la un

<nota>
*In traducere sterge dosarul- N.T.
** In traducere copiata mesajul— N.T. </nota>

server la altul, nu este necesar - sau posibil - sa se specifice numele gazdei serve¬rului la copierea mesajelor IMAP.

<titlu>Mutarea mesajelor intr-un dosar</titlu>
Iata o functie definita de utilizator care muta un mesaj IMAP din dosarul curent intr-un alt dosar, fiind date numarul IMAP al mesajului si dosarul destinatie:

function move_message* ($identificator, $prefix, $numar, $dosar);
A
$dosar = $prefix . „INBOX.” . $dosar; echo „\n\n”; echo „<H4>Muta mesajul $numar in dosarul $dosar</H4>”;
$nr_mesaj = „” . $numar; if ($ok === false)
A echo „\nMesajul nu a fost mutat in dosarul specificat.”; print_error_stack();
S
S

Mesajele originale sunt doar marcate in vederea stergerii si raman in cutia postala pana la eliminarea efectiva.

<Sfatul specialistului>
Intrebare: Acest modul a explicat modul de utilizare a nume¬roase functii IMAP, dar exista si alte functii IMAP care mi-ar putea fi de folos?
Raspuns: Biblioteca IMAP furnizeaza multe alte functii in afara celor descrise in acest modul. De exemplu, functiile imap_search() si imap_scanmailbox() va permit sa cautati mesaje care satisfac criterii specificate. De exemplu, puteti cauta mesaje al caror corp contine anumite texte. De asemenea, functiile IMAP folosite in acest modul furnizeaza frecvent optiuni si caracteristici care nu au fost explicate in totalitate. Pentru mai multe informatii privind biblioteca IMAP PHP, consultati manualul PHP pe suport electronic, la adresa www.php.net.
</Sfatul specialistului>

<Test de evaluare>
1. Care este protocolul folosit pentru expedierea mesajelor prin Internet?
2. In ce mod contribuie functiile definite de utilizator la simplificarea activitatii de programare?
3. Folosind functia definita de utilizator adecvata descrisa in acest modul, scrieti o instructiune care copiaza mesajul IMAP cu numarul 101 din dosarul curent

<nota>
*In traducere muta mesajul- N.T. </nota>

in dosarul "test". Se presupune ca variabila $mb contine identificatorul asociat cu o conexiune IMAP deschisa, precum si ca variabila $pfx contine prefixul cutiei postale IMAP.
4. Folosind functia definita de utilizator adecvata descrisa in acest modul, scrieti o instructiune care modifica numele dosarului "test1" in "test2". Se presu¬pune ca variabila $mb contine identificatorul asociat cu o conexiune IMAP deschisa, ca variabila $server contine sirul server IMAP (care include paran¬tezele acolade, numele gazdei serverului, protocolul si numarul portului), ca variabila $pfx contine prefixul cutiei postale IMAP, precum si ca variabilele $vechi, respectiv $nou contin numele dosarului.
5. Folosind functia definita de utilizator adecvata descrisa in acest modul, scrieti o instructiune care afiseaza antetele asociate mesajului IMAP al carui numar este dat de valoarea variabilei $n. Se va presupune ca variabila $nb contine identificatorul asociat cu o conexiune IMAP deschisa. </Test de evaluare>


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta