ВсС для Ρ€Π°Π΄ΠΈΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρ

ВытаскиваСм письма ΠΈΠ· ΠΏΠΎΡ‡Ρ‚Ρ‹. Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ IMAP. Рассылка писСм Π½Π° PHP с использованиСм imap Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° писСм php imap

НСкоторыС Π²Π΅Π±-прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ особСнной элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой собствСнный ΠΊΠΎΠ΄ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ SquirrelMail ΠΈΠ»ΠΈ Roundcube . НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅, Π·Π½Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ IMAP Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с IMAP Π² PHP рассказываСтся Π½Π° Π΄Π²ΡƒΡ… страницах. На ΠΏΠ΅Ρ€Π²ΠΎΠΉ страницС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌ сСрвСрам ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ сообщСний. На Π²Ρ‚ΠΎΡ€ΠΎΠΉ страницС ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с элСктронной ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сообщСний, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚.д…

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для запуска сцСнариСв собствСнного ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ URL для Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

  • func β€” Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ сообщСниС)
  • folder - имя ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ВходящиС, ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅, спам)
  • uid β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $ _GET ΠΈ switch ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Π²Ρ‹Π·ΠΎΠ²Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… дСйствий.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ сСрвСру IMAP

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС с сСрвСром IMAP, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ imap_connect() , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ΠŸΡƒΡ‚ΡŒ сообщСния, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π² руководствС .

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ ящику прСдставляСт собой строку, которая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ сСрвСр ΠΈ ΠΏΠΎΡ€Ρ‚ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках опрСдСляСт имя Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹.

Π’ΠΎΡ‚ нСсколько строк для ΠΏΠ°ΠΏΠΊΠΈ ВходящиС ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… слуТб:

  • Gmail {imap.gmail.com: 993/imap/ssl} INBOX
  • Yahoo {imap.mail.yahoo.com: 993/imap/ssl} INBOX
  • AOL {imap.aol.com: 993/imap/ssl} INBOX

На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСрвСрах Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ SSL, Π² этом случаС Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Β«SSLΒ» ΠΈΠ· строки. Π”Ρ€ΡƒΠ³ΠΈΠ΅ сСрвСры ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС сСртификаты, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Β«NOVALIDATE-CERTΒ».

Π‘ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ сСрвСру, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ списка ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика Π² вашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹
  • ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ списка сообщСний элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅
  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ содСрТимого элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π°

Папки элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

ВходящиС , ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ , ΠœΡƒΡΠΎΡ€ ΠΈ Π‘ΠΏΠ°ΠΌ β€” эти ΠΏΠ°ΠΏΠΊΠΈ Π²ΠΈΠ΄Π½Ρ‹ практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ часто ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΠ°ΠΏΠΊΠΈ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сообщСния Π² этих ΠΏΠ°ΠΏΠΊΠ°Ρ…, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. НапримСр, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Β«INBOXΒ» (ВходящиС) Π² строкС ΠΏΡƒΡ‚ΠΈ Ρ€Π°Π½Π΅Π΅. Если Π½ΡƒΠΆΠ½ΠΎ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ для спама, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«SpamΒ» (Π‘ΠΏΠ°ΠΌ) вмСсто этого. Но хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСчислСно ΠΊΠ°ΠΊ Π‘ΠΏΠ°ΠΌ Π² ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Ссли ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, настоящСС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΎΠΊ Π² Ρ„ΠΎΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠ°ΠΏΠΊΠΈ Π² ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ imap_list() .

"; foreach ($folders as $folder) { $folder = str_replace("{imap.gmail..php?folder=" . $folder . "&func=view">" . $folder . ""; } echo "";

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ дСскриптор соСдинСния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с imap_open() Π² качСствС исходного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° imap_list() . ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΡƒΡ‚ΡŒ (Π±Π΅Π· ΠΏΠ°ΠΏΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«INBOXΒ»). Π’ качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° запрос всСх доступных ΠΏΠ°ΠΏΠΎΠΊ.

Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ сообщСнии

КаТдая ΠΏΠ°ΠΏΠΊΠ° содСрТит список доступных сообщСний элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список сообщСний Π² нашСм ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌ ящикС.

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство сообщСний, доступных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ imap_num_msg() . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ imap_header() , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ послСдниС 20 писСм:

($numMessages - 20); $i--) { $header = imap_header($imap, $i); $fromInfo = $header->from; $replyInfo = $header->reply_to; $details = array("fromAddr" => (isset($fromInfo->mailbox) && isset($fromInfo->host)) ? $fromInfo->mailbox . "@" . $fromInfo->host: "", "fromName" => (isset($fromInfo->personal)) ? $fromInfo->personal: "", "replyAddr" => (isset($replyInfo->mailbox) && isset($replyInfo->host)) ? $replyInfo->mailbox . "@" . $replyInfo->host: "", "replyName" => (isset($replyTo->personal)) ? $replyto->personal: "", "subject" => (isset($header->subject)) ? $header->subject: "", "udate" => (isset($header->udate)) ? $header->udate: ""); $uid = imap_uid($imap, $i); echo "

    "; echo "
  • From:" . $details["fromName"]; echo " " . $details["fromAddr"] . "
  • "; echo "
  • Subject: " . $details["subject"] ..php?folder=" . $folder . "&uid=" . $uid ..php?folder=" . $folder . "&uid=" . $uid . "&func=delete">Delete
  • "; echo "
"; }

БоСдинСния $Imap Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ Π² Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· послСдниС 20 писСм с использованиСм числа сообщСний, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… imap_num_msg() . Бвязь ΠΈ Π½ΠΎΠΌΠ΅Ρ€ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π΄Π°ΡŽΡ‚ΡΡ imap_header() , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСринят Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ отправитСля, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, имя, Ρ‚Π΅ΠΌΠ° ΠΈ Ρ‚.Π΄

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства сообщСний, Π½Π΅ являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ для сообщСния. Если Ρƒ вас Π΅ΡΡ‚ΡŒ 100 писСм Π² вашСм ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌ ящикС, Ρ‚ΠΎ послСднСС число Π±ΡƒΠ΄Π΅Ρ‚ 100, прСдыдущая Π±ΡƒΠ΄Π΅Ρ‚ 99, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ сообщСниС ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 100, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ сообщСниС, Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ 100.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ дСйствиям, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. КаТдоС письмо ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ UID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, прСдоставляя ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ, функция для Π½ΠΎΠΌΠ΅Ρ€Π° imap_uid() UID-ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ содСрТания сообщСния

Π§Ρ‚Π΅Π½ΠΈΠ΅ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ простоС Π΄Π΅Π»ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, поэтому Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠšΠ»Π°ΡΡΡ‹ ΠΏΠΎΡ‡Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠœΠΈΡ‚ΡƒΠ» ΠšΠΎΡ€Π°Π΄ΠΈΡ. Π’ классС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅:

encoding) { case 3: return imap_base64($text); case 4: return imap_qprint($text); default: return $text; } } // multipart if ($structure->type == 1) { foreach ($structure->parts as $index => $subStruct) { $prefix = ""; if ($partNumber) { $prefix = $partNumber . "."; } $data = get_part($imap, $uid, $mimetype, $subStruct, $prefix . ($index + 1)); if ($data) { return $data; } } } } return false; } function get_mime_type($structure) { $primaryMimetype = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER"); if ($structure->subtype) { return $primaryMimetype[(int)$structure->type] . "/" . $structure->subtype; } return "TEXT/PLAIN"; }

Ѐункция GetBody() ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ содСрТимоС элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, пСрСдавая свой ​​UID ΠΈ соСдинСниС IMAP. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π²Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get_part() с Ρ‚ΠΈΠΏΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ text / HTML. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ сначала ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ содСрТимоС HTML Π²Π½ΡƒΡ‚Ρ€ΠΈ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ структуру элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ imap_fetchstructure() . ΠœΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UID, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ FT_UID постоянно.

Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚ΠΈΠΏ MIME сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ get_mime_type() . Π•ΡΡ‚ΡŒ восСмь Ρ‚ΠΈΠΏΠΎΠ² MIME, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл:

  • 0 – TEXT
  • 1 – MULTIPART
  • 2 – MESSAGE
  • 3 – APPLICATION
  • 4 – AUDIO
  • 5 – IMAGE
  • 6 – VIDEO
  • 7 – OTHER

ΠœΡ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ MIME строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов Ρ‚ΠΈΠΏΠΎΠ² MIME.

БоставныС сообщСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большоС число ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ рСкурсивно Ρ‡Π΅Ρ€Π΅Π· всС ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‡Π°ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ с использованиСм imap_fetchBody() , ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ находится с использованиСм mime-type.

Π—Π°Ρ‚Π΅ΠΌ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ дСкодирования Π² соотвСтствии с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° сообщСния ΠΈ возврящаСм содСрТаниС. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список доступных Ρ‚ΠΈΠΏΠΎΠ² кодирования:

  • 0 – 7BIT
  • 1 – 8BIT
  • 2 – BINARY
  • 3 – BASE64
  • 4 – QUOTED-PRINTABLE
  • 5 – OTHER

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΎΠ±Π·ΠΎΡ€Π° основ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру IMAP, список сообщСний Π²Π½ΡƒΡ‚Ρ€ΠΈ доступных ΠΏΠ°ΠΏΠΎΠΊ, ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ содСрТаниС сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ страницС записи, Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΎ функциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сообщСний ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Одним ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ imap Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся созданиС ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ подпиской ΠΈ отпиской ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ‚ вашСй ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΉ рассылки. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² рассылках ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΉΡ‚ΠΈ Π½Π° Π½Π΅ΠΊΡƒΡŽ страницу ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ свои дСйствия, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ рСгулярно запускался cron daemon?om. Из-Π·Π° этого ΠΎΠ½ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ популярСн ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ.

Но, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ рассылки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ способ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования crond, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌ.

БобствСнно, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² функциях Π½Π΅ Ρ‚Π°ΠΊ слоТно. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° РНР, Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΠΎΠΉΠΌΠ΅Ρ‚, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НСкоторыС затруднСния ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ с Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² писСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ скрипт.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ самого скрипта ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ нСслоТно. Π”Π΅ΠΌΠΎΠ½ устанавливаСт соСдинСниС с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌ сСрвСром, ΠΈ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° Π½Π΅ΠΌ писСм. Π’ случаС Ссли писСм Π½Π΅Ρ‚, Ρ€Π°Π±ΠΎΡ‚Π° скрипта прСкращаСтся.
Если письма Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ происходит Ρ€Π°Π·Π±ΠΎΡ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ письма. ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ΡΡ поля from ΠΈ subject. Если ΠΏΠΎΠ»Π΅ subject содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… допустимых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (подписка ΠΈΠ»ΠΈ отписка), Ρ‚ΠΎ запись, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля from Π»ΠΈΠ±ΠΎ становится Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ (ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ), Π»ΠΈΠ±ΠΎ удаляСтся ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π½Π° адрСс, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΠ»Π΅ from посылаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·Π²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ дСйствиях скрипта. ПослС этого письмо помСчаСтся для удалСния. Π’ случаС Ссли subject Π½Π΅ содСрТит допустимых Ρ‚Π΅ΠΌ, посылаСтся ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС, ΠΈ письмо Ρ‚Π°ΠΊ ΠΆΠ΅ помСчаСтся для удалСния. Π—Π°Ρ‚Π΅ΠΌ скрипт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΈΡΡŒΠΌΡƒ.
Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Ρ€Π°Π·Π±ΠΎΡ€ всСх писСм, ΠΎΠ½ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ящик.

НС Π±ΡƒΠ΄Ρƒ ΡƒΡ‚ΠΎΠΌΠ»ΡΡ‚ΡŒ читатСля Π±Π»ΠΎΠΊ-схСмами, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ сразу ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π΅Π»Ρƒ. Для открытия ящика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция imap_open. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ РНР ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с нСсколькими ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ящиком. Π’ нашСм случаС это POP3 Π½Π° 110 ΠΏΠΎΡ€Ρ‚Ρƒ (стандарт). ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния скрипта ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $my_box.


Π’ дальнСйшСм Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ эта пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ пратичСски Π²ΠΎ всСх imap функциях. Π”Π°Π»Π΅Π΅ провСряСм ящик Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ писСм. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ выполняСт функция imap_num_msg.

$n = imap_num_msg ($my_box );

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСмСнная $n Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ количСство писСм Π² ящикС. Число это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ большС нуля, ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π΅ΠΌΡƒ (Ссли ящик пуст).
Если письма Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ while выполняСм Ρ€Π°Π·Π±ΠΎΡ€ писСм, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ увСличивая Π½ΠΎΠΌΠ΅Ρ€ письма Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ письмо Π² ящикС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ 0, ΠΊΠ°ΠΊ, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива.
Для увСличСния Π½ΠΎΠΌΠ΅Ρ€Π° письма, присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $m Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² условиях выполнСния Ρ†ΠΈΠΊΠ»Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ $m++.

Для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² достаточно Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: imap_header ΠΈ imap_fetch_overview. Для выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΈΡ…, ΠΏΠΎΠΌΠΈΠΌΠΎ ящика, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ письма. Π’ нашСм случаС, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $m.

Imap_header Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ письма. Π‘Ρ€Π΅Π΄ΠΈ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит массив from, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ значСния. Π­Ρ‚ΠΎ personal, adl, mailbox ΠΈ host. Нас ΠΈΠ· Π½ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ mailbox ΠΈ host. ΠŸΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ ΠΈΡ…, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ адрСс, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ письмо.


$h = $h -> from ;
a
foreach ($h as $k => $v ) {
$mailbox = $v -> mailbox ;
$host = $v -> host ;
$personal = $v -> personal ;
$email = $mailbox . ? @ Β¬ . $host ;

Imap_fetch_overview - ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΡƒ письма. Для этих ΠΆΠ΅ Ρ†Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ imap_header Π½ΠΎ ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½ это, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Из массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эта функция, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅ subject


foreach ($s as $k => $v ) {
$subj = $v -> subject ;
}

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ наши дСйствия сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ email ΠΈΠ· Π±Π°Π·Ρ‹, ΠΈ Π² случаС наличия Π΅Π³ΠΎ Ρ‚Π°ΠΌ, ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ всю строку с этой записью ΠΊΠ°ΠΊ Β«ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΡƒΡŽΒ», Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ послС заполнСния Ρ„ΠΎΡ€ΠΌΡ‹ рассылки Π½Π° сайтС, подписчику присваиваСтся статус 0, Π° послС подтвСрТдСния подписки ΠΎΠ½ мСняСтся Π½Π° 1.

if ($subj == "SUBSCRIBE" ) {
mysql_query ("UPDATE subscribe SET stat=1 WHERE email=$my_email" );

}
mysql_query ("DELETE FROM subscribe WHERE email = $my_email" );
$del = imap_delete ($my_box , $m );
}
else {
$del = imap_delete ($my_box , $m );
}

ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, послС выполнСния всСх дСйствий скрипт ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ящик.


Данная ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, лишь дСмонстрация Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° РНР ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ динамичСски ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ сайты, Π½ΠΎ ΠΈ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎ части написания скриптов для shell, Ρ€Π½Ρ€ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ своСго ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π° Perl, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ мСнСС…

Листинг всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² соСдинСния с Π±Π°Π·ΠΎΠΉ (db.php):

include "db.php" ;
$my_box = imap_open ("{you.pop.host/pop3:110}" , "login" , "password" );
$n = imap_num_msg ($my_box );
$m = 0 ;
$add_text = "

Бпасибо Π·Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ вашСй подписки " ;
$add_sbj = "You added!" ;
$del_text = "

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π½ΠΎ этот ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ
Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для администрирования рассылки" ;
$err_sbj = "Error" ;
$headers = "From: Subscribe Robot

X-mailer: PHP4

Content-type: text/plain; charset=UTF-8
" ;
if($n != 0 ) {
while($m ++ < $n ) {
$h = imap_header ($my_box , $m );
$s = imap_fetch_overview ($my_box , $m );
$h = $h -> from ;
foreach ($h as $k => $v ) {
$mailbox = $v -> mailbox ;
$host = $v -> host ;
$personal = $v -> personal ;
$email = $mailbox . "@" . $host ;
$my_email = mysql_escape_string ($email );
}
foreach ($s as $k => $v ) {
$subj = $v -> subject ;
}
if ($subj == "SUBSCRIBE" ) {
mysql_query ("UPDATE table SET stat=1 WHERE email=$my_email" );
//print mysql_error();
$del = imap_delete ($my_box , $m );
mail ($email , $add_sbj , $add_text , $headers );
}
elseif ($subj == "UNSUBSCRIBE" ) {
mysql_query ("DELETE FROM table WHERE email = $my_email" );
$del = imap_delete ($my_box , $m );
mail ($email , $del_sbj , $del_text , $headers );
}
else {
$del = imap_delete ($open_box , $m );
mail ($email , $err_sbj , $err_text , $headers );
}
}
$clear = imap_expunge ($my_box );
}
?>


ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π° – это ваТнСйший инструмСнт для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ Ссли Π²Ρ‹ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‚ΠΎ навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ситуациСй: Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ письмо, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТатся Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ скрипом. Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎ ЯндСкс ΠΏΠΎΡ‡Ρ‚Π΅ – Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я подСлюсь с Π²Π°ΠΌΠΈ, Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ письма ΠΈΠ· ящика, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π² письмС Π΅ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» - ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… манипуляций Π½Π°Π΄ Π½ΠΈΠΌ.

Π‘Π°ΠΌ я с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ столкнулся достаточно Π΄Π°Π²Π½ΠΎ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΌΠ°Π»ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ c ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ЯндСкса ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» массу Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½Π΅Ρ€Π²ΠΎΠ² для достиТСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. ΠŸΠ΅Ρ€Π²Π°Ρ моя ошибка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, я Π½Π°Ρ‡Π΅Π» интСнсивно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² сСти, Π½ΠΎ Π½Π΅ воспользовался самой справкой (ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ) ЯндСкс. Π”Π°, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ полСзная информация, хотя Π΅Ρ‘ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ, Π½ΠΎ ΠΎΠ½Π° достаточно ваТная для написания Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° скрипта (ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅). На Ρ‚ΠΎ врСмя Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт, ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сводилось: Π½Π° ЯндСкс ΠΏΠΎΡ‡Ρ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ письмо с прайсом Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² xls Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρ€Π°Π· Π² сутки, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π‘Π” ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Π΄Π΅-Ρ‚ΠΎ, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ).

И ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлаСм ΠΏΠ΅Ρ€Π΅Π΄ написаниСм скрипта – это Π½Π°ΠΌΠ΅Ρ‚ΠΈΠΌ наш ΠΏΠ»Π°Π½ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· дСвяти ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²:

  1. Настроим ΠΏΠΎΡ‡Ρ‚Ρƒ для получСния доступа Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹;
  2. НамСтим саму структуру PHP прилоТСния ΠΈ опрСдСлимся с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²;
  3. Познакомимся с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ IMAP ΠΈ Π΅Π³ΠΎ возмоТностями;
  4. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ ΠΊ ЯндСкс ΠΏΠΎΡ‡Ρ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° ΠΈ отслСдим ошибки Π½Π° этом этапС;
  5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΡˆΠ°ΠΏΠΊΡƒ письма;
  6. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‚Π΅Π»Π° письма;
  7. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈ сохраним Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹;
  8. Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ;
  9. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Ρ‹.

Π’Π΅ΠΌΠ° довольно ΠΎΠ±ΡŠΡ‘ΠΌΠ½Π°Ρ, Π½ΠΎ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΈΠ·Π»ΠΎΠΆΠΈΡ‚ΡŒ всё максимально ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΠΈ понятно. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, приступим.

Настройка ΠΏΠΎΡ‡Ρ‚Ρ‹

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² свою ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² настройки, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅:



Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² настройки Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‡Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ IMAP ΠΈ POP3:


Π’ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ увидят ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ ΠΊΠ°ΠΊ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ я сталкивался, ΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° доступы ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Ρƒ вас настройки Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ставим Π³Π°Π»ΠΎΡ‡ΠΊΠΈ ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅, для нас Π³Π»Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ доступ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» IMAP.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° прилоТСния ΠΈ Π΅Ρ‘ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ структуру прилоТСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π΅ Π½ΡƒΠΆΠ½Π°, Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ (я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Sublime Text):


  • tmp – ΠΏΠ°ΠΏΠΊΠ° Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· письма, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ;
  • .htaccess – настройка сСрвСрной части, Ссли Ρƒ вас сСрвСр apache;
  • functions.php – сюда Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ наши Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
  • main.css – Ρ„Π°ΠΉΠ» стилСй;
  • index.php – Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° прилоТСния;

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UTF-8 ΠΈ поэтому сразу Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ„Π°ΠΉΠ».htaccess ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ строками:

AddDefaultCharset utf-8 AddCharset utf-8 * CharsetSourceEnc utf-8 CharsetDefault utf-8

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» IMAP

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ ЯндСкс ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» POP3. Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ IMAP? Из Π΄Π²ΡƒΡ… этих ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ² IMAP являСтся Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΌ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ POP3, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ряд прСимущСств (ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, воспользовавшись Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠ΅ΠΉ), Π½ΠΎ Π² нашСм случаС Π½Π° Π²Ρ‹Π±ΠΎΡ€ повлияло Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ. Π›ΠΈΡ‡Π½ΠΎ я особой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π΅ Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ получСния письма. Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Π°ΠΌ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» POP3 Ρ‚ΠΎ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ IMAP Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ для Π½Π΅Π³ΠΎ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ ЯндСкс ΠΏΠΎΡ‡Ρ‚Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IMAP

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠΎΡ‡Ρ‚Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΡ‡Ρ‚Ρ‹, Π΅Ρ‘ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ адрСс ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра. Если с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ‚, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΠΏΠΎΠΌΠΎΡ‰ΠΈ ЯндСкс. Об этом (возникшСй Ρƒ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅) я Π²Ρ‹ΡˆΠ΅ ΠΈ писал Π² сСти масса ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π³Π΄Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Π°Π½ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π° стадии ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки – это, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, нСприятно. Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π° ΠΎΠΊΠΎΠ»ΠΎ ΠΈ сразу Π΄Π°ΠΌ ΠΏΡ€ΡΠΌΡƒΡŽ ссылку Π½Π° страницу ЯндСкс – настройка ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ . Π’ΠΎΡ‚ собствСнно Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСпосрСдствСнно ΠΊ самому ΠΊΠΎΠ΄Ρƒ:

Header("Content-Type: text/html; charset=utf-8"); error_reporting(0); require_once("functions.php"); $mail_login = "yandex_ΠΏΠΎΡ‡Ρ‚Π°"; $mail_password = "ΠΏΠ°Ρ€ΠΎΠ»ΡŒ_ΠΎΡ‚_ΠΏΠΎΡ‡Ρ‚Ρ‹"; $mail_imap = "{imap.yandex.ru:993/imap/ssl}"; // Бписок ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² $mail_filetypes = array("MSWORD"); $connection = imap_open($mail_imap, $mail_login, $mail_password); if(!$connection){ echo("Ошибка соСдинСния с ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ - ".$mail_login); exit; }else{ $msg_num = imap_num_msg($connection); $mails_data = array(); for($i = 1; $i <= $msg_num; $i++){ /* Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ письмом ΠΈΠ· IMAP-ΠΏΠΎΡ‚ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΡƒΡ‚ */ } } imap_close($connection);

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8 ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибок. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» functions.php ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ настройки, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Π±Ρ‹Π»Π° Ρ€Π΅Ρ‡ΡŒ. Π’ массивС $mail_filetypes прописываСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹. Π’Π°ΠΊ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ΅ΡΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ мусор, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ с ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ происходит ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ imap_open(), которая ΠΏΡ€ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ IMAP-ΠΏΠΎΡ‚ΠΎΠΊ, Π° ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ - false (Π½ΠΎ Ссли Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибок, Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ). Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ imap_close() ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния. ΠœΠ΅ΠΆΠ΄Ρƒ этими двумя функциями ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ соСдинСнии ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ imap_num_msg() ΡƒΠ·Π½Π°Π΅ΠΌ число писСм Π½Π° ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈ добавляСм массив, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ всС Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π”Π°Π»Π΅Π΅ слСдуСт Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ письмо ΠΏΠΎ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ (нумСрация происходит ΠΎΡ‚ 1) ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° шапки письма

Для получСния шапки письма Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ imap_header(), Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСт Π½ΠΎΠΌΠ΅Ρ€ письма:

// Шапка письма $msg_header = imap_header($connection, $i);

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, сохраняя Π² массив $mails_data. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· писСм:

На этом ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ всС Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ это особой Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚, тянСм, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅. Намного Π²Π°ΠΆΠ½Π΅Π΅ - ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π΅ΠΌΡ‹ письма. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΈ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Вакая ΠΆΠ΅ ситуация ΠΈ с Ρ‚Π΅Π»ΠΎΠΌ письма ΠΈ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

$mails_data[$i]["time"] = time($msg_header->MailDate); $mails_data[$i]["date"] = $msg_header->MailDate; foreach($msg_header->to as $data){ $mails_data[$i]["to"] = $data->mailbox."@".$data->host; } foreach($msg_header->from as $data){ $mails_data[$i]["from"] = $data->mailbox."@".$data->host; }

БохраняСм Π² нашСм массивС: Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ, Π΄Π°Ρ‚Ρƒ получСния письма, email получатСля ΠΈ отправитСля ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ‚Π΅ΠΌΡ‹ письма. Для этого Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ» functions.php:

Function check_utf8($charset){ if(strtolower($charset) != "utf-8"){ return false; } return true; } function convert_to_utf8($in_charset, $str){ return iconv(strtolower($in_charset), "utf-8", $str); } function get_imap_title($str){ $mime = imap_mime_header_decode($str); $title = ""; foreach($mime as $key => $m){ if(!check_utf8($m->charset)){ $title .= convert_to_utf8($m->charset, $m->text); }else{ $title .= $m->text; } } return $title; }

Названия говорящиС ΠΈ, я Π΄ΡƒΠΌΠ°ΡŽ, стоит ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднюю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ imap_mime_header_decode() Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ возвращаСтся массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π΄Π²Π° свойства charset (ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°) ΠΈ text (тСкст Ρ‚Π΅ΠΌΡ‹). Π”Π°Π»ΡŒΡˆΠ΅ всё просто: Π² Ρ†ΠΈΠΊΠ»Π΅ провСряя ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΊ UTF-8 ΠΈ склСиваСм Ρ‚Π΅ΠΌΡƒ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнёмся Π² Ρ„Π°ΠΉΠ» index.php ΠΈ вытянСм послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:

$mails_data[$i]["title"] = get_imap_title($msg_header->subject);

На этом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° шапки письма Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.

Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Ρ‚Π΅Π»ΠΎΠΌ письма

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ постСпСнно Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш массив с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ письма ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ для получСния Ρ‚Π΅Π»Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ двумя функциями:

// ВСло письма $msg_structure = imap_fetchstructure($connection, $i); $msg_body = imap_fetchbody($connection, $i, 1);

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $msg_structure находится структура письма – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ массу ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ части этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° прСдставлСн Π½ΠΈΠΆΠ΅:

Π§Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ нашСй Π·Π°Π΄Π°Ρ‡ΠΈ:

  • type – ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ‚Π΅Π»Π° письма, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊ Π½Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ 7 (ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Π΅ совСтуСт свой Π²ΠΈΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅Π»Π΅ письма);
  • encoding – ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° трансфСра Ρ‚Π΅Π»Π°, мСняСтся ΠΎΡ‚ 0 Π΄ΠΎ 5 (0 - 7BIT, 1 - 8BIT, 2 – BINARY, 3 - BASE64, 4 - QUOTED-PRINTABLE, 5 - OTHER);
  • parts – массив частСй письма, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅.

НСмного ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим свойство parts. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ячСйкС этого массива Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ информация, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ тСксту письма, Π° начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ – Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ указываСтся type ΠΈ Π² parameters ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² явном ΠΈ Π² Π½Π΅ явном Π²ΠΈΠ΄Π΅.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° письма ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Ρ€Π΅ Ρƒ мСня Π±Ρ‹Π»ΠΈ случаи, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π΄ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… - пяти ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, поэтому Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‘, ΠΊΠ°ΠΊ говорится, Ρ€Π°Π·Π΄Ρ€Π°ΠΊΠΎΠ½ΠΈΡ‚ΡŒ Π½Π°ΠΌ Π² дальнСйшСм потрСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Вторая функция imap_fetchbody() ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ письма, Ρ‡Π°Ρ‰Π΅ всСго Π² Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ‚Π΅Π»Π° письма:

$body = "";

ВСрнёмся Π² Ρ„Π°ΠΉΠ» functions.php ΠΈ напишСм Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Function recursive_search($structure){ $encoding = ""; if($structure->subtype == "HTML" || $structure->type == 0){ if($structure->parameters->attribute == "charset"){ $charset = $structure->parameters->value; } return array("encoding" => $structure->encoding, "charset" => strtolower($charset), "subtype" => $structure->subtype); }else{ if(isset($structure->parts)){ return recursive_search($structure->parts); }else{ if($structure->parameters->attribute == "charset"){ $charset = $structure->parameters->value; } return array("encoding" => $structure->encoding, "charset" => strtolower($charset), "subtype" => $structure->subtype); } } }

Ѐункция recursive_search() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – структуру письма, Π³Π΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ провСряСт свойства ΠΈ достаСт Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: encoding, charset, subtype. Π’ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии являСтся отсутствиС свойства parts с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ячСйкой. Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΡΡΠ½ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚ особо Π½Π΅Ρ‡Π΅Π³ΠΎ, ΠΈΠ· ΠΊΠΎΠ΄Π° я Π΄ΡƒΠΌΠ°ΡŽ понятно, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ происходит.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π° письма, которая Π½Π°ΠΌ потрСбуСтся Π² дальнСйшСм:

Function structure_encoding($encoding, $msg_body){ switch((int) $encoding){ case 4: $body = imap_qprint($msg_body); break; case 3: $body = imap_base64($msg_body); break; case 2: $body = imap_binary($msg_body); break; case 1: $body = imap_8bit($msg_body); break; case 0: $body = $msg_body; break; default: $body = ""; break; } return $body; }

$recursive_data = recursive_search($msg_structure); if($recursive_data["encoding"] == 0 || $recursive_data["encoding"] == 1){ $body = $msg_body; } if($recursive_data["encoding"] == 4){ $body = structure_encoding($recursive_data["encoding"], $msg_body); } if($recursive_data["encoding"] == 3){ $body = structure_encoding($recursive_data["encoding"], $msg_body); } if($recursive_data["encoding"] == 2){ $body = structure_encoding($recursive_data["encoding"], $msg_body); } if(!check_utf8($recursive_data["charset"])){ $body = convert_to_utf8($recursive_data["charset"], $msg_body); }

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· рСкурсии, постСпСнно провСряСм ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ трансфСра ΠΈ, Π² зависимости ΠΎΡ‚ этого, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ structure_encoding() с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π’ послСднСм условном ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² UTF-8 ΠΈ Ссли послС всСх манипуляций Ρƒ нас получится ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ подвСсти Ρ‡Π΅Ρ€Ρ‚Ρƒ:

$mails_data[$i]["body"] = base64_encode($body);

Π’ Ρ‚Π΅Π»Π΅ письма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст, Ρ‚Π°ΠΊ ΠΈ HTML Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° со своими стилями. ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ Π² BASE64, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΅Ρ…Π°Π»Π° ΡƒΠΆΠ΅ наша вСрстка.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹

Π’ΠΎΡ‚, ΠΏΠ»Π°Π²Π½ΠΎ подбираСмся ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ написания нашСго прилоТСния:

// Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ if(isset($msg_structure->parts)){ for($j = 1, $f = 2; $j < count($msg_structure->parts); $j++, $f++){ if(in_array($msg_structure->parts[$j]->subtype, $mail_filetypes)){ $mails_data[$i]["attachs"][$j]["type"] = $msg_structure->parts[$j]->subtype; $mails_data[$i]["attachs"][$j]["size"] = $msg_structure->parts[$j]->bytes; $mails_data[$i]["attachs"][$j]["name"] = get_imap_title($msg_structure->parts[$j]->parameters->value); $mails_data[$i]["attachs"][$j]["file"] = structure_encoding($msg_structure->parts[$j]->encoding, imap_fetchbody($connection, $i, $f)); file_put_contents("tmp/".iconv("utf-8", "cp1251", $mails_data[$i]["attachs"][$j]["name"]), $mails_data[$i]["attachs"][$j]["file"]); } } }

ΠšΡƒΡΠΎΠΊ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ - ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π΅Π»ΠΎΠΌ письма, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот этап Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с наличия Π΅Π³ΠΎ Π² массивС свойства parts. НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‚ΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅, ΡΠ²Π΅Ρ€ΡΡΡΡŒ со списком Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅Ρ…ΠΈΡ‚Ρ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ file_put_contents() ΠΌΡ‹ сохраняСм наш Ρ„Π°ΠΉΠ» ΠΊ сСбС Π½Π° сСрвСр Π² ΠΏΠ°ΠΏΠΊΡƒ tmp.

Π₯ΠΎΡ‡Ρƒ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚!

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρƒ нас сформировался массив с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ $mails_data, ΠΈ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСпосрСдствСнно с Π½ΠΈΠΌ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я использовал тСстовоС письмо, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»Π΅ΠΆΠ°Π»ΠΎ Ρƒ мСня ΠΏΠΎΡ‡Ρ‚Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ глянСм, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² ΠΈΡ‚ΠΎΠ³Π΅:


Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρƒ вас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ массив, ΡƒΠ²Ρ‹, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ содСрТаниС Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ нашСй HTML Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅:

ЯндСкс ΠŸΠΎΡ‡Ρ‚Π° | <?php echo($mail_login);?>

ЯндСкс ΠŸΠΎΡ‡Ρ‚Π° (ВходящиС) |

Число писСм:

писСм Π½Π΅Ρ‚
$mail):?>
ВрСмСнная ΠΌΠ΅Ρ‚ΠΊΠ°:
Π”Π°Ρ‚Π°:
ΠšΠΎΠΌΡƒ:
ΠžΡ‚:
Π’Π΅ΠΌΠ°:
Письмо в base64:
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:
$attach):?>
Π’ΠΈΠΏ:
Π Π°Π·ΠΌΠ΅Ρ€ (Π² Π±Π°ΠΉΡ‚Π°Ρ…):
Имя:
Π’Π΅Π»ΠΎ:

Π‘Ρ‚ΠΈΠ»ΠΈ я Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ‚ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ особой Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΠΈΠ³Ρ€Π°ΡŽΡ‚, Π² ΠΈΡ‚ΠΎΠ³Π΅:


А Π½Π° сСрвСрС Π² ΠΏΠ°ΠΏΠΊΠ΅ tmp Ρƒ вас появится Ρ„Π°ΠΉΠ».

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ΄Π΅Π»Π°Π² всС этапы ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π²Ρ‹ достигнитС Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π½ΠΎ всё Π½Π΅ Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ – Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ написании скрипта ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Π½Π° всСх этапах, письма ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΡ‡Ρ‚, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹. Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ЯндСкс ΠΏΠΎΡ‡Ρ‚Π° ΠΈ ΠΈΡ… докумСнтация пСриодичСский обновляСтся, поэтому ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. На этом Ρƒ мСня всё, надСюсь Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ЯндСкс ΠΏΠΎΡ‡Ρ‚Ρ‹.

НС получаСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ письмо с Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ(
Ссли отправляСтся ΠΏΠΎΡ‡Ρ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠΌ - Π»ΡŽΠ±Ρ‹ΠΌ - Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ тСкст письма

ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ поТалуйста

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ... Ссли с яндСкса Π½Π° яндСкс ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ Ρ‚ΠΎ всС получаСтся...
Ρ‚ΠΈΠΏΠ° разобрался
Π½ΠΎ Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ Π²ΠΎΡ€Π΄Π° этот скрипт Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ понятно... Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ строчка MSWORD рядом Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ поставил ΠΈ ΠΏΠ΄Ρ„ ΠΈ ΠΆΠΏΠ³ ΠΈ ΠΏΠ½Π³ - Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈ сохраняСт Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΡ€Π΄.... ΠΊΠ°ΠΊ Ρ‚ΠΎ Ρ‚Π°ΠΊ

Одним ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ imap Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся созданиС ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ подпиской ΠΈ отпиской ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ‚ вашСй ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΉ рассылки. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² рассылках ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΉΡ‚ΠΈ Π½Π° Π½Π΅ΠΊΡƒΡŽ страницу ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ свои дСйствия, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ рСгулярно запускался cron daemon-om. Из-Π·Π° этого ΠΎΠ½ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ популярСн ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ.

Но, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ рассылки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ способ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования cron, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌ.

БобствСнно, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² функциях Π½Π΅ слоТно. НСкоторыС затруднСния ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ с Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² писСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ скрипт.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ самого скрипта ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ нСслоТно. Π”Π΅ΠΌΠΎΠ½ устанавливаСт соСдинСниС с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌ сСрвСром, ΠΈ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° Π½Π΅ΠΌ писСм. Π’ случаС Ссли писСм Π½Π΅Ρ‚, Ρ€Π°Π±ΠΎΡ‚Π° скрипта прСкращаСтся. Если письма Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ происходит Ρ€Π°Π·Π±ΠΎΡ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ письма. ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ΡΡ поля from ΠΈ subject. Если ΠΏΠΎΠ»Π΅ subject содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… допустимых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (подписка ΠΈΠ»ΠΈ отписка), Ρ‚ΠΎ запись, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля from Π»ΠΈΠ±ΠΎ становится Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ (ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ), Π»ΠΈΠ±ΠΎ удаляСтся ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π½Π° адрСс, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΠ»Π΅ from посылаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·Π²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ дСйствиях скрипта. ПослС этого письмо помСчаСтся для удалСния. Π’ случаС Ссли subject Π½Π΅ содСрТит допустимых Ρ‚Π΅ΠΌ, посылаСтся ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС, ΠΈ письмо Ρ‚Π°ΠΊ ΠΆΠ΅ помСчаСтся для удалСния. Π—Π°Ρ‚Π΅ΠΌ скрипт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΈΡΡŒΠΌΡƒ. Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Ρ€Π°Π·Π±ΠΎΡ€ всСх писСм, ΠΎΠ½ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ящик.

Для открытия ящика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция imap_open . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PHP ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с нСсколькими ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ящиком. Π’ нашСм случаС это pop3 Π½Π° 110 ΠΏΠΎΡ€Ρ‚Ρƒ (стандарт). ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния скрипта ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $my_box.

$my_box = imap_open("{you.pop.host/pop3:110}", "login", "password");

Π’ дальнСйшСм Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ эта пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ пратичСски Π²ΠΎ всСх imap функциях. Π”Π°Π»Π΅Π΅ провСряСм ящик Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ писСм. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ выполняСт функция imap_num_msg.

$n = imap_num_msg($my_box);

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСмСнная $n Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ количСство писСм Π² ящикС. Число это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ большС нуля, ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π΅ΠΌΡƒ (Ссли ящик пуст). Если письма Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ while выполняСм Ρ€Π°Π·Π±ΠΎΡ€ писСм, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ увСличивая Π½ΠΎΠΌΠ΅Ρ€ письма Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ письмо Π² ящикС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ 0, ΠΊΠ°ΠΊ, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива. Для увСличСния Π½ΠΎΠΌΠ΅Ρ€Π° письма, присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $m Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² условиях выполнСния Ρ†ΠΈΠΊΠ»Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ $m++.

Для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² достаточно Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: imap_header ΠΈ imap_fetch_overview . Для выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΈΡ…, ΠΏΠΎΠΌΠΈΠΌΠΎ ящика, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ письма. Π’ нашСм случаС, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $m.

imap_header Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ письма. Π‘Ρ€Π΅Π΄ΠΈ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит массив from, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ значСния. Π­Ρ‚ΠΎ personal, adl, mailbox ΠΈ host. Нас ΠΈΠ· Π½ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ mailbox ΠΈ host. ΠŸΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ ΠΈΡ…, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ адрСс, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ письмо.

$h = imap_header($my_box, $m); $h = $h->from; foreach ($h as $k => $v) { $mailbox = $v->mailbox; $host = $v->host; $personal = $v->personal; $email = $mailbox . "@" . $host;

imap_fetch_overview - ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΡƒ письма. Для этих ΠΆΠ΅ Ρ†Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ imap_header Π½ΠΎ ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½ это, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Из массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эта функция, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅ subject

$s = imap_fetch_overview($my_box, $m); foreach ($s as $k => $v) $subj = $v->subject;

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ наши дСйствия сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ email ΠΈΠ· Π±Π°Π·Ρ‹, ΠΈ Π² случаС наличия Π΅Π³ΠΎ Ρ‚Π°ΠΌ, ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ всю строку с этой записью ΠΊΠ°ΠΊ, Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ послС заполнСния Ρ„ΠΎΡ€ΠΌΡ‹ рассылки Π½Π° сайтС, подписчику присваиваСтся статус 0, Π° послС подтвСрТдСния подписки ΠΎΠ½ мСняСтся Π½Π° 1.

If ($subj == "subscribe") { mysql_query("update subscribe set stat=1 where email=$my_email"); $del = imap_delete($my_box, $m); mail($email, $add_sbj, $add_text, $headers); } else if ($subj == "unsubscribe") { mysql_query("delete from subscribe where email = $my_email"); $del = imap_delete($my_box, $m); mail($email, $del_sbj, $del_text, $headers); } else { $del = imap_delete($my_box, $m); mail($email, $err_sbj, $err_text, $headers); } послС выполнСния всСх дСйствий скрипт ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ящик. $clear = imap_expunge($my_box);

Данная ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, лишь дСмонстрация Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° PHP ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ динамичСски ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ сайты, Π½ΠΎ ΠΈ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹.

Листинг всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² соСдинСния с Π±Π°Π·ΠΎΠΉ:

Include "config.php"; // соСдинСниС с Π‘Π” $my_box = imap_open("{you.pop.host/pop3:110}", "login", "password"); $n = imap_num_msg($my_box); $m = 0; $add_text = " Бпасибо Π·Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ вашСй подписки "; $add_sbj = "you added!"; $del_text = " Π’Ρ‹ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· списка рассылки. "; $del_sbj = "delete from list"; $err_text = " Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π½ΠΎ этот ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для администрирования рассылки"; $err_sbj = "error"; $headers = "from: subscribe robot x-mailer: php4 content-type: text/plain; charset=windows-1251 "; if($n != 0) { while($m++ < $n) { $h = imap_header($my_box, $m); $s = imap_fetch_overview($my_box, $m); $h = $h->from; foreach ($h as $k =>$v) { $mailbox = $v->mailbox; $host = $v->host; $personal = $v->personal; $email = $mailbox . "@" . $host; $my_email = mysql_escape_string($email); } foreach ($s as $k =>$v) $subj = $v->subject; if ($subj == "subscribe") { mysql_query("update table set stat=1 where email=$my_email"); //print mysql_error(); $del = imap_delete($my_box, $m); mail($email, $add_sbj, $add_text, $headers); } else if ($subj == "unsubscribe") { mysql_query("delete from table where email = $my_email"); $del = imap_delete($my_box, $m); mail($email, $del_sbj, $del_text, $headers); } else { $del = imap_delete($open_box, $m); mail($email, $err_sbj, $err_text, $headers); } } $clear = imap_expunge($my_box); }

Π’ листингe ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· win Π² koi, ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика отправитСля ΠΈ Ρ‚.Π΄. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ·Π»ΠΈΡˆΠ΅ΡΡ‚Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

На днях ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с входящСй ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ. НСмного ΠΏΠΎ Π³ΡƒΠ³Π»ΠΈΠ² я ΡƒΠ²ΠΈΠ΄Π΅Π» Ρ‡Ρ‚ΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ задания ΠΌΠ½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² POP3 ΠΈ IMAP .
Но Π²Ρ‹Π±ΠΎΡ€ Π±Ρ‹Π» ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ я Π±ΡƒΠ΄Ρƒ IMAP Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ соврСмСннСй, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° POP3.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ½Π΅ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ IMAP , ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ письма ΠΈΠ· ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра Yandex/Google.

Для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ я Π²Ρ‹Π±Ρ€Π°Π» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PhpImap , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ для мСня Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ сСрвСру.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡΡ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ сСрвСру.

Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ PHP с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ IMAP, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ php_imap.dll/imap.so Π² Ρ„Π°ΠΉΠ»Π΅ php.ini.

Для Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ Yandex ΠΏΠΎΡ‡Ρ‚Π΅ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ мСня мСньшС всСго Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ с Π½Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

//ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ include("/phpImap/Mailbox.php"); include("/phpImap/IncomingMail.php"); //Для удобства создам константы для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ сСрвСру. define("MAIL_IMAP_SERVER", "imap.yandex.ru"); define("MAIL_IMAP_SERVER_PORT", 993); define("MAIL_IMAP_LOGIN", " "); define("MAIL_IMAP_PASS", "example_pass"); define("MAIL_IMAP_PATH", "{".MAIL_IMAP_SERVER.":".MAIL_IMAP_SERVER_PORT."/imap/ssl}INBOX"); $mailbox = new PhpImap\Mailbox(MAIL_IMAP_PATH, MAIL_IMAP_LOGIN, MAIL_IMAP_PASS, __DIR__); try { $mailbox->getImapStream(); } catch (Exception $e) { die($e->getMessage()); }

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ конструктор класса Mailbox ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

  • MAIL_IMAP_PATH - CΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² сСбС адрСс сСрвСра (MAIL_IMAP_SERVER), ΠΏΠΎΡ€Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (MAIL_IMAP_SERVER_PORT), Ρ‚ΠΈΠΏ соСдинСния (imap) ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ соСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ (ssl). ПослС Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊ входящим сообщСниям (INBOX).
  • MAIL_IMAP_LOGIN - ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡΡ.
  • MAIL_IMAP_PASS - ΠŸΠ°Ρ€ΠΎΠ»ΡŒ (Ρ‡Π°Ρ‰Π΅ всСго это ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика).
  • __DIR__ - Π­Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ сообщСния.

ПослС этого ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, создалось Π»ΠΈ нашС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ getImapStream() Ссли ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ создастся Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π½Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π² настройках Yandex ΠΏΠΎΡ‡Ρ‚Ρ‹ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ IMAP.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ сравним ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΡ‡Ρ‚Π΅ Gmail.

Define("MAIL_IMAP_SERVER", "imap.gmail.com"); define("MAIL_IMAP_SERVER_PORT", 993); define("MAIL_IMAP_LOGIN", " "); define("MAIL_IMAP_PASS", "example_pass"); define("MAIL_IMAP_PATH", "{".MAIL_IMAP_SERVER.":".MAIL_IMAP_SERVER_PORT."/imap/ssl}INBOX");

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ½ΠΎ практичСски Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎ скорСй всСго Ρƒ Вас сработаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ сСрвСру.
Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π² Gmail Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IMAP ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ . Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π² настройках Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΈ POP/IMAP Π² ΠΎΠΏΡ†ΠΈΠΈ Доступ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ IMAP β‡’ Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ IMAP.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ IMAP Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ . Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²ΡƒΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ профиля. ПослС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π΅Π³ΠΎ созданию . Когда ΠΌΡ‹ создадим Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для прилоТСния Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² константу MAIL_IMAP_PASS для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании пароля ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρƒ Вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ получится ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ сСрвСру это связно с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π΅Ρ‰Π΅ Π½Π΅ примСнялся ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ сСрвису Gmail ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 5-60 ΠΌΠΈΠ½ΡƒΡ‚.

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос для получСния ΠΏΠΎΡ‚ΠΎΠ²Ρ‹Ρ… сообщСний ΠΈΠ· сСрвСра. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ searchMailBox(string $criteria) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ сути являСтся ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° imap_search . Π’ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ $criteria являСтся Π½Π΅ΠΊΠΈΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ поиска Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ сообщСний, сам ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ элСмСнтов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² послСдствии Π½Π°ΠΌ пригодятся для получСния Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сообщСния.

$mailsIds = $mailbox->searchMailBox("ALL");

Как Π’Ρ‹ ΡƒΠΆΠ΅ догадались Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ всС сообщСния.
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ критСриями поиска:

//ВсС сообщСния Π·Π° 3 дня. $mailsIds = $mailbox->searchMailBox("SINCE "".date("d-M-Y",strtotime("-3 day"))."""); //НСпрочитанныС сообщСния Π·Π° 3 дня. $mailsIds = $mailbox->searchMailBox("UNSEEN SINCE "".date("d-M-Y",strtotime("-3 day"))."""); //Поиск сообщСний с Ρ‚Π°ΠΊΠΈΠΌ соотвСтствиСм Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ TEXT. $mailsIds = $mailbox->searchMailBox("TEXT "Новостная рассылка""); //Поиск сообщСний с Ρ‚Π°ΠΊΠΈΠΌ соотвСтствиСм Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ BODY. $mailsIds = $mailbox->searchMailBox("BODY "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ сообщСниС""); //Поиск ΠΏΠΎ Π΅ΠΌΠ΅ΠΉΠ»Ρƒ отправитСля. $mailsIds = $mailbox->searchMailBox("FROM " ""); //ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сообщСния ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ SUBJECT $mailsIds = $mailbox->searchMailBox("SUBJECT "Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ обновлСния для вашСго Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"");

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ основы использованиС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² поиска.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ массив ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² сообщСний ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

//ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ послСднСго сообщСния ΠΈΠ· массива. $id = end($mailsIds); //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса IncomingMail ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сообщСнии. $mail = $mailbox->getMail($id); //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ. $mail->getAttachments(); //Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСния. echo $mail->textHtml;

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ сообщСния ΠΈΠ· нашСго письма ΠΈ Π΅Π³ΠΎ влоТСния Π±Π΅Π· всяких Π·Π°ΠΌΠΎΡ€ΠΎΡ‡Π΅ΠΊ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ присутствиС ряд ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ сообщСниями:

БохраняСм сообщСния ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠ΄.

$mailbox->saveMail($id,$id.".eml");

УстанавливаСм сообщСния ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ Π΅Π³ΠΎ id.

$mailbox->markMailAsUnread($id);

УстанавливаСм сообщСния ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ Π΅Π³ΠΎ id.

$mailbox->markMailAsRead($id);

УстанавливаСм Π½Π° сообщСниС ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ ΠΏΠΎ Π΅Π³ΠΎ id.

$mailbox->markMailAsImportant($id);

УдаляСм сообщСния ΠΏΠΎ Π΅Π³ΠΎ id.


НаТимая ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ сайта, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ соглашСнии