Atpakaļ uz pirmo lapu

laacz » 2004 » 14. septembris

IMAP iekš PHP

11:04 @ 2004-09-14 = 0 blabla  

Pēc pāris stundu ilgas cīņas ar PHP un IMAP protokolu, tika noskaidrots, kā var realizēt t.s. user–defined message flags. Kāpēc tas vajadzīgs? Tāpēc, ka jebkuram IMAP serverim ir predefinēti pieci sistēmas flagi, kurus var piešķirt vēstulei. Tie ir Seen, Answered, Flagged, Deleted un Draft.

Šie sistēmas flagi ar laiku kļūst par īsu. Teiksim, ja nu es vēlos atzīmēt kādu vēstuli, lai vēlāk pie tās atgrieztos? It kā varētu izmantot Flagged, nosaucot to lietotāja galā par svarīgs, taču tas nav labākais veids. Kā izrādās, viss realizējas stipri vienkāršāk, lai arī ar pāris problēmiņām (PHP IMAP interfeisa realizācijā).

Kā izriet no RFC 2060, jebkurai vēstulei jebkurš lietotājs var piešķirt savus flagus. Teiksim, PHP versijā tas būtu:

imap_setflag_full($mbox, $uid, 'Mansflags', ST_UID)

Itin vai viss ir dikti jauki, taču, kā izrādās, ka funkcijas imap_headerinfo($mbox, $msgid) rezultātā šie lietotāja definētie flagi nekādi neparādās…

Turpinot investigāciju, nolēmu pamēģināt funkciju imap_headers($mbox), kas nav pati optimālākā resursu ziņā, bet strādā, jo atgriež kaut ko līdzīgu masīvam, kurš sastāv no teksta rindām. Piem.:

    A     1)29–Jun–2004 Bļamba         {Mansflags} RE: test (1352 chars)

Kā redzam, mums ir teksta rinda, kurā Pirms tēmas parādās mūsu specifiskais flags (figūriekavās). Attiecīgi, atliek tikai izrakt messāges kārtas numuru, pārbaudīt, vai pirms tēmas neir {Mansflags} un basta. Jāatcerās, ka masīva indekss nebūt neatbilst tam, ko dēvē par vēstules sequence number.

Teksta rindas formāts ir aptuveni sekojošs:

<SYSTEM FLAGS ABBREVIATED> <MSGNO>) <DATE> {<LIST OF CUSTOM FLAGS>} <SUBJECT> (<LENGTH OF MESSAGE IN CHARS>)

P.S. Tas var mainīties atkarībā no IMAP servera. Konkrētais piemērs strādā ar Cyrus IMAPD.

P.P.S. Jāatzīst, ka nebūt nav grūti šādi spēlēties ar nabaga saņēmēju, sūtot vēstules ar tēmām {Mansflags} You are owned!, bet tas jau ir atkarīgs no tā, kā esi uztaisījis iepriekšminētās funkcijas imap_headers() rezultātu apstrādi :)

Un galu galā lietotājs ir laimīgs, jo viņam tiek nodrošināta papildus funkcionalitāte. Šis, protams, attiecas uz tiem izstrādātājiem, kuri veido un uztur savus IMAP klientus plašākai vai šaurākai lietošanai.

Kā tu saucies:
Tava e-pasta adresīte:
(nevienam netiks rādīta, vai dota; pat pie komentāra ne)
Ko teiksi?
FYI
* Formatēšana: iekļaujot tekstu no abām pusēm iekā '//', tas iznāks kursīvā: //teksts// (teksts), bet treknu tekstu var dabūt ar '**' katrā pusē: **teksts** (teksts), savukārt pasvītrotu ar '__': __teksts__ (teksts).
* Enteri tiek automātiski pārtaisīti par enteriem. Jebkurš HTML (izņemot <BR.*>) tiek parādīts, kā ievadīts (ne HTML'iski)
* E-pastu var vadīt droši iekšā, ja ir bailes no spambotiem. Tas tiek aizsargāts no jamajiem.
* Jebkurš url'is (www.kaka.com, http://kaka.com/, …) tiek automātiski pārtaisīts par spiežamu prieku (www.kaka.com, http://kaka.com/, …)
* Ko nozīmē 'detransliterēšana'? Manuprāt sen jau ir laiks sākt rakstīt nevis translitā (aaboljiishi), bet gan normāliem letiņu burtiem (āboļīši). Tad nu tieši to arī dara attiecīgā poga - pārveido tekstu no translita uz parastu. Gadās kļūmītes, bet labāk šitā nekā nekā.
 

Valid CSS! Valid XHTML 1.0 Transitional! Valid RSS! Valid Atom!
Tātad tā. Kopīraita notice. Viss materiāls, kas atrodams šajā saitā nedrīkst tikt izplatīts, kopēts, jebkādi citādi reproducēts vai izmantots bez manas (laacz) rakstiskas atļaujas. šīs tiesības man laipni piedāvā Autortiesību Likums.
Jebkura informācija, kuru kāds labprātīgi publicē šajā saitā (piemēram, komentāri), pieder tās autoram. Taču, ievietojot infromāciju šajā saitā, tās autors sniedz saita īpašniekam tiesības to daļēji vai pilnā apjomā lietot, izplatīt, reproducēt, modificēt, adaptēt, publicēt, tulkot, publiski demonstrēt. Saita īpašnieks ir tiesīgs jebkuru komentāru jebkurā brīdī dzēst, vai modificēt.
© 1996 — 2025 laacz. Visas tiesības… nu jūs jau zināt, kur.
Spēcināts ar SPP (S Pivom Potjaņet) v2.0b (code name Marasmus)
Hostingu laipni piedāvā DEAC.

laacz blog activity

Top.LV

 

Lapa izlīdusi no servera dzīlēm 0.03066 sekundē(s)