Php imap uygulaması. PHP'nin imap posta işlevleri. E-posta klasörleri

Golovna / Corisna bilgileri

Olası zastosuvan imap işlevlerinden biri, posta dağıtımınızda bir aboneliğin keruvatı ve bir coristuvach aboneliği olan bir posta arka plan programının oluşturulmasıdır. Bu görevin uygulanması için zafer rozetlerinde iki yöntem vardır. Koristuvach'ın yana gitmekten ve eylemlerini onaylamaktan suçlu olduğu ilk ödenek, diğeri ise levhanın gücünü güçlendirmektir. Başka bir yol, hazırlama komut dosyasının cron daemon-om tarafından düzenli olarak çalıştırıldığından emin olmaktır. Zincirler aracılığıyla ilk yol kadar popüler değil.

Ale, hatırlayacağınız gibi, vicorist'in en ciddi gülleri başka bir yoldur. Çünkü cron kullanma yeteneğiniz var, onunla acele edin.

İşlevleri anlamak kolay değil. Listelerin başlıkları ayrıştırılarak zorluklar aşılabilir, böylece script işlenebilir.

Vidamy senaryosunun robotik algoritması beceriksiz. Daemon, posta sunucusundan veri yükler ve yaprakların varlığını kontrol eder. Yaprak olmadığı için senaryo robotu eklenir. Bir sayfa olarak, ilk sayfanın başlıklarını incelemek gerekir. Kimden ve konu alanları görünür. Konu alanı, iki geçerli başlık seçeneğinden birini (abonelik veya abonelik) içeriyorsa, bu durumda, kimden alanının değerinin geçerli olup olmadığı veya etkinleştiği (onaylı) veya tablodan görülebildiği kayıt. Her iki durumda da, alanda belirtilen adreste, lütfen komut dosyası hakkında ek bilgi sağlayın. Bir sonraki sayfa bir sonraki ile gösterilir. Konu, kabul edilebilir konuların intikamını almıyorsa, af hakkında bir hatırlatma uygulanır ve sayfa da kaldırılmak üzere belirlenir. Bir sonraki sayfaya gitmek için Potim betiği. Kullanılan yaprakların seçimini bitirdikten sonra şarap kutusu temizlenir.

Ekran görüntülerini görüntülemek için imap_open işlevi kullanılır. PHP parçaları robotu bir dizi protokolle destekler; Vipad'imiz 110 portta (standart) pop3'e sahiptir. $my_box değişiklik komut dosyasını yazmanın sonucunu davet edin.

$my_box = imap_open("(you.pop.host/pop3:110)", "giriş", "şifre");

Devam edelim ve bu değişikliğin tüm imap işlevleri için pratik olacağından emin olalım. Yaprakların varlığını kontrol etmek için bir kutu verdik. imap_num_msg işlevi yeniden doğrulamayı gerçekleştirir.

$n = imap_num_msg($my_box);

Sonuç olarak, kutudaki yaprak sayısı değiştirildi. Sayı sıfırdan büyük veya sizin için daha pahalı olabilir (boş bir kutu gibi). Yapraklar varsa, while döngüsü yapraklara bakacak ve sırayla yaprak sayısını bir artıracaktır. Kutudaki ilk sayfanın, dizinin ilk öğesi olarak 0 numaralı anne olacağına dikkat edin. Sayfa sayısını artırmak için $m değerini 0 olarak değiştirelim ve sonra döngünün zihinleri için bir $m++ artıralım.

Başlıkları analiz etmek için iki işlev yeterlidir: imap_header ve imap_fetch_overview . Bunların cilt bakımı için, krem ​​ekranları, sayfa numarasını belirtmek gerekir. Bize göre, şarap döngüsünün ortasında değişen $m.

imap_header, sonucu sayfa başlığı hakkında bilgi alan bir nesneye dönüştürür. Saniyenin ortasında, intikam alınacak nesne, bir anlamın intikamını almak için bir tür dizidir. Kişisel, adl, posta kutusu ve ana bilgisayar. Biz onları daha az posta kutusu ve barındırmayız. їх göndererek, sayfanın gönderildiği adresi alıyoruz.

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

imap_fetch_overview - Sayfanın temasını getirmemize izin verin. Aynı amaçlar için, vicorate ve imap_header yapmak mümkün olabilir, ancak birkaç nedenden dolayı onu kullanmak mümkün olmayabilir. Fonksiyonu döndüren diziden sadece konu alanına ihtiyacımız var.

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

Daha sonra, çalışmamız e-postanın tabandan kazanıldığı noktaya kadar yürütülecek ve orada bariz olduğu zamanlarda, tüm satırı görebiliyormuşsunuz gibi bir kayıtla işaretleyin. Diyelim ki sitede üyelik formunu doldurduktan sonra ön ödeme yapana 0 statüsü verildi ve abonelik onaylandıktan sonra şarabın 1 olarak değiştirildiğini varsayalım.

If ($subj == "abone ol") ( mysql_query("update abone seti stat=1 burada email=$my_email"); $del = imap_delete($my_box, $m); mail($email, $add_sbj, $add_text , $başlıklar); ) else if ($subj == "abonelikten çık") ( mysql_query("e-posta = $my_emailim_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); ) tüm komut dosyasını yazdıktan sonra ekranı temizler. $temizle = imap_expunge($my_box);

Dana en basit program, PHP'de yalnızca dinamik olarak değişen siteleri değil, görünmeyen hizmetleri de yazabileceğinizin bir kanıtı.

Veritabanıyla bağlantının birkaç parametresi için program sisteminin listesi:

"config.php" içerir; // db girişi $my_box = imap_open("(you.pop.host/pop3:110)", "giriş", "şifre"); $n = imap_num_msg($my_box); $m=0; $add_text = "Aboneliğinizi onaylamak için"; $add_sbj = "eklediniz!"; $del_text = "Sarf malzemeleri listesinden çıkarıldınız."; $del_sbj = "listeden sil"; $err_text = "Lütfen sadece dağıtımın yönetimi için bir posta kutusu ekranı gönderin"; $err_sbj = "hata"; $headers = "from: abone ol robot x-mailer: php4 içerik tipi: metin/düz; charset=windows-1251"; if($n != 0) ( while($m++)< $n) { $h = imap_header($my_box, $m); $s = imap_fetch_overview($my_box, $m); $h = $h->itibaren; foreach ($h as $k =>$v) ( $mailbox = $v->mailbox; $host = $v->host; $personal = $v->personal; $email = $mailbox . "@" . $host, $my_email = mysql_escape_string($email); if ($subj == "abone ol") ( mysql_query("tablo setini güncelle stat=1 burada email=$my_email"); //print mysql_error(); $del = imap_delete($my_box, $m); mail($ email, $add_sbj, $add_text, $headers); ) else if ($subj == "aboneliği iptal et") ( mysql_query("e-posta = $my_emailim olan tablodan sil") ; mail ($email, $del_sbj, $del_text, $başlıklar); ) else ( $del = imap_delete($open_box, $m); mail($email, $err_sbj, $err_text, $headers); ) ) $clear = imap_expunge($my_box); )

Liste günlük ayrıntılara sahiptir, örneğin, win'den koi'ye dönüştürmek mümkündür. posta ekran görüntüleri icra memuru vb. Deri gibi fonksiyonel yüzeysellik de ihtiyaca göre eklenebilir.

Web programları koristuvach için özel e-posta oluşturabilir. Şu anda kendi yetkili e-posta kodumuzu SquirrelMail veya Roundcube yazabiliriz. Ne alırsanız alın, IMAP postasının çalışmasını bilmek siyah olacaktır.

PHP rozpovidae'de IMAP ile iki tarafta nasıl pratik yapılır. İlk tarafta, bağlanmak için gerekli fonksiyonlar sunuculara gönder okumak anımsatıyor. Diğer taraftan elektronik posta ile yapılan çalışmalardan, örneğin uzaktan destekten, programların katılımından bahsedelim.

Göstermek işlevsellik, bilgisayar korsanlığı kodu uygulayın, böylece posta istemcinizde komut dosyalarını çalıştırabilirsiniz.

Viki için gerekli özellikler için URL parametreleri:

  • func - işlev türü, gerekli (örneğin: oku e-posta, mail ekranına bakın, hatırlatıcıya bakın)
  • klasör - bağlantı için posta kutusu klasörünün adı (örneğin: Gelen Kutusu, Gelen Kutusu, spam)
  • uid – benzersiz e-posta tanımlayıcısı

$_GET yardımı için parametreler alınabilir ve wikipedia için switch kullanılabilir.

Bir IMAP sunucusuna bağlanma

Bir IMAP sunucusuyla bağlantı kurmak için aşağıda gösterildiği gibi imap_connect() işlevini kullanırız:

Bilmenin yolu, bu şifreyi ve sunucuya bağlanmak için gerekli parametreleri aldım. Kılavuzda ek parametreler hakkında bilgi bulabilirsiniz.

Posta ekranına giden yol, kıvrık kemerlerde sunucu ve bağlantı noktasını tanımlayan bir satırdadır, posta klasörünün adını belirtir.

Bir klasör için mızrak sıralarının ekseni Girdileri posta hizmetleri:

  • Gmail (imap.gmail.com: 993/imap/ssl) GELEN KUTUSU
  • Yahoo (imap.mail.yahoo.com: 993/imap/ssl) GELEN KUTUSU
  • AOL (imap.aol.com: 993/imap/ssl) GELEN KUTUSU

Bazı sunucularda SSL etkin değildir, bu durumda SSL şarjını atlamanız gerekir. Diğer sunucular, NOVALIDATE-CERT'i onaylamaktan sorumlu olduğunuz geçerli sertifikalar kazanabilir.

Mail sunucusuna bağlı olduğumuz için artık bu tür aktiviteler için kullanılan fonksiyonlara göz atabiliriz:

  • Posta kaydınızdaki posta ekranı klasörünün listesini görüntüleme
  • Papalığın e-posta listelerinin listesini görüntüleme
  • Yazarın e-postasını tekrar ziyaret etme

E-posta klasörleri

Girdileri , Nadislanі , Smithі İstenmeyen e-posta- klasörler, elektronik postanın cilt benzeri biçiminde pratik olarak görülebilir ve corystuvach'lar genellikle güçlü klasörler oluşturabilir. Bu klasörlerdeki notlara bakmak için bağlantı sıramızı değiştirmek bizim sorumluluğumuzdadır. Örneğin, daha önce arka arkaya "INBOX" (Vhіdnі) zastosuvat. Gerekirse, spam klasörüne bağlanın, yerini alması için Spam (Spam) için etiketleyin. Ale hocha tse can buti pererahovane yak İstenmeyen e-posta elektronik postanın fiziksel kaydında, sanki posta istemcisi aracılığıyla hayrete düşüyormuş gibi, arka planda klasörlerin doğru adı farklı olabilir. imap_list() yardımıyla mevcut tüm genel kayıt klasörlerini diriltebiliriz.

"; foreach ($klasör olarak $klasör) ( $klasör = str_replace("(imap.gmail..php?klasör=" . $klasör . "&func=view">" . $klasör . "";) Eko "";

İsteğe bir tanıtıcı iletmek, imap_open() öğesini imap_list() öğesinin çıktı parametresi olarak kullanmak bizim sorumluluğumuzdadır. Ayrıca yoldan geçmekten de suçluyuz (bir klasör olmadan, örneğin INBOX). Üçüncü parametre є mevcut klasörleri ister.

Bildirimlerle ilgili bildirimler

Dış görünüm klasörü, mevcut e-posta bildirimlerinin bir listesini içerir, bu yüzden e-posta ekranımızda nasıl bir bildirim listesi oluşturabileceğimizi merak edelim.

Yardım imap_num_msg() için küçük bir miktar hatırlatıcı almanız gerekecek. Ardından, cilt bakımı başlığı için bilgileri almak için imap_header() işlevinde ince ayar yapabiliriz.

Kalan 20 yaprağı istediğimizi varsayalım:

($numMessages - 20); $i--) ( $başlık = imap_header($imap, $i); $fromInfo = $başlık->from; $replyInfo = $başlık->reply_to; $details = array("fromAddr" => (isset($) ) fromInfo->mailbox) && isset($fromInfo->host)) ?$fromInfo->mailbox ."@" .$fromInfo->host: "", "fromName" => $fromInfo->kişisel: "", "replyAddr" => (isset($replyInfo->mailbox) && isset($replyInfo->host)) ? $replyInfo->mailbox. "@" . $replyInfo->host : "", "replyName" => ( isset($replyTo->kişisel)) ?$replyto->kişisel: "", "konu" => (isset($başlık->konu)) ?$başlık->konu : "", "udate" => ( isset($header->udate)) ?$header->udate: ""); $uid = imap_uid($imap, $i);

    ";Eko"
  • Tip:$detaylar["adından"]; Eko " " . $detaylar["fromAddr"] .
  • ";Eko"
  • Ders:" .$detaylar["konu"] ..php?klasör=" . $ klasörü. "&id=" . $uid ..php?folder=" . $klasör . "&uid=" . $uid . "&func=delete">Sil
  • ";Eko"
"; }

$Imap, gerekli papalıktaki buti vodkriti'den kaynaklanmaktadır. 20 yaprağın geri kalanını, imap_num_msg() öğesini çıkararak farklı sayıda hatırlatıcıyla gözden geçirebiliriz. Çağrı ve e-posta numarası, daha sonra dizin adı, e-posta adresi, ad, konu vb. gibi arayan bilgileri için değiştirilebilen başlık hakkında bilgi almak için imap_header() tarafından verilir.

Lütfen yabancı numara biçimindeki e-posta numarasının bildirim için benzersiz bir tanımlayıcı olmadığını unutmayın. Postalama ekranında ½ 100 yaprağınız varsa, kalan sayı 100, ön numara 99 vb. 100 sayısının altındaki bildirimi görür görmez yeni bildirimi kaldıracağız, sonraki sayı 100 olacaktır.

Saldırıyı tanımlamak için elektronik posta için benzersiz bir tanımlayıcı almanız gerekir. Dış görünüm sayfası benzersiz bir tanımlayıcıya, bir e-posta göndermek için kullanabileceğimiz bir UID sıralamasına, imap_uid() sayı işlevi UID'ye özgü olabilir ve zamanla değişmez.

Bir hatırlatma için tekrar ziyaret

Elektronik postayı okumak, önceden olduğu gibi sağda gerçekten o kadar basit değil, bu nedenle Mitul Coradia'yı yayan posta sınıfını söylemek gerekiyor. Uyarlanmış sınıfın stokumuz için üç işlevi vardır:

kodlama) ( durum 3: dönüş imap_base64($metin); durum 4: dönüş imap_qprint($metin); varsayılan: dönüş $metin; ) ) // çok parçalı if ($yapı->tür == 1) ( foreach ($yapı) ->parts as $index => $subStruct) ( $prefix = ""; if ($partNumber) ( $prefix = $partNumber. "."; ) $data = get_part($imap, $uid, $mimetype, $ subStruct, $prefix .($index + 1)), if ($veri) ( return $veri; ) ) ) ) false döndürür; ) function get_mime_type($yapı) ( $primaryMimetype = dizi("METİN", "ÇOKLU", "MESAJ", "UYGULAMA", "SES", "GÖRÜNTÜ", "VİDEO", "DİĞER"); if ($yapı ->alt tür) ( $birincilMimetipi[(int)$yapı->tür] döndürür. "/" . $yapı->alttür; ) "METİN/DÜZ" döndürür;)

GetBody() işlevi e-postayı alır ve UID ve IMAP oturumunu geçirir. Fonksiyonun ortasında text/HTML gibi bir içerik türü ile get_part() fonksiyonunu çağırıyoruz. E-posta bildiriminin olağan metninin okunması daha kolaydır. Bu şekilde e-postanın ortasındaki HTML'yi anlamaya çalışacağız.

imap_fetchstructure() yardım işlevinden sonra e-postanın yapısını okuyalım. FT_UID'yi sürekli olarak geçmek yerine, UID'yi değiştirmek için kitaplık işlevlerini değiştirdik.

Ayrıca get_mime_type() yardım işlevi için e-postanın MIME türüne de ihtiyacımız var. Є Bu işlev tarafından tam sayılar biçiminde döndürülen MIME türleri:

  • 0-METİN
  • 1 - ÇOKLU PARÇA
  • 2 - MESAJ
  • 3 – UYGULAMA
  • 4-SES
  • 5 - GÖRÜNTÜ
  • 6 - VİDEO
  • 7-DİĞER

Ek MIME türleri dizileri için gerçek MIME türü satırlara dönüştürüyoruz.

Depo eklemeleri çok sayıda alt tür oluşturabilir, bu nedenle, doğru mime türü alt türleri biliniyorsa, sayının bir kısmı ve imap_fetchBody() alt türlerine sahip elektronik posta da dahil olmak üzere tüm alt türler arasında yinelemeli olarak geçiş yaparız.

Farklı bir destek türü kullanalım ve kapatalım. Mevcut kodlama türlerinin en son listesi:

  • 0-7bit
  • 1-8 bit
  • 2-İkili
  • 3-BASE64
  • 4 - TEKLİFLİ-YAZDIRILABİLİR
  • 5-DİĞER

Visnovok

IMAP sunucusuyla iletişim kurmanın temellerini incelemeyi, mevcut klasörlerin ortasında güncellemeleri listelemeyi ve e-posta bildirimlerini okumayı bitirdik. Notun bir sonraki tarafında, posta istemcisinin ek işlevlerini uygulamak için kullanılabilecek işlevler hakkında bilgi verilecektir, örneğin, bu ekin işlenmesinin uzaktan desteği.

Birkaç gün önce PHP'de girdi ile çalışmama izin verecek küçük bir modül yazma görevim vardı. Google Troch'ları POP3і IMAP.
Ale vybіr buv bariz scho vykoristati Bu vin є є bolsh işlevsel ve suсhnіshy, protokol POP3'e IMAP yapacağım.

Şimdi ellerimi kirletmeliyim, IMAP protokolleriyle nasıl çalışılır, Yandex/Google posta sunucusundan nasıl izin alınır.

Kullanışlı işler için kütüphaneyi seçtim PhpImap Shards benim için gerekli tüm görevleri hızlı ve kolay bir şekilde uygulayamayacak.

Posta sunucusuna bağlantı.

Şimdi, bir protokol ve bir kitaplık seçtiysek, posta sunucusuna bağlanmayı deneyebiliriz.

IMAP protokolüyle tam PHP çalışması için uzantıyı etkinleştirmeniz gerekir. php_imap.dll/imap.so php.ini dosyasında.

Koç için Yandex'e posta ile bağlanmayı deneyin, çünkü onunla en az sorunum var.

//Kütüphaneler dahil("/phpImap/Mailbox.php"); include("/phpImap/IncomingMail.php"); //Şeffaflık için, posta sunucusuna bağlanmak için sabitler oluşturuyoruz. 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()); )

Yak mi bachimo kurucu sınıfı Posta kutusu aşağıdaki argümanları kabul edin:

  • MAIL_IMAP_PATH- Sunucu adresini (MAIL_IMAP_SERVER), bağlantı portunu (MAIL_IMAP_SERVER_PORT), bağlantı tipini (imap) ayarlayın ve bağlantının şifreleneceğini (ssl) gösterin. Kıvırcık kollardan sonra, lütfen bağlı olana kadar klasörü belirtin, bu durumda giriş bildirimlerine kadar (INBOX).
  • MAIL_IMAP_LOGIN- Posta ekran görüntüsü, bağlanacağız.
  • MAIL_IMAP_PASS- Şifre (çoğunlukla şifre, postalanan ekran görüntüsünden alınır).
  • __DIR__- Ek dosyalarının ve posta bildirimlerinin kaydedileceği klasöre kadar.

Bundan sonra, bağlantımızın yöntem aracılığıyla gerçekleştiğine inanamıyoruz. getImapStream() sanki bağlantının nedeni olmamış gibi, program çok uzak olmayan bağlantının nedenini suçlar.

Yandex posta ayarlarında IMAP protokolü aracılığıyla bağlanma olasılığını etkinleştirmiş olabileceğinizi unutmayın.

Şimdi Gmail postasına yeniden bağlanalım.

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");

Aslına bakarsanız ön bağlantı önünde pratikte çalışmıyor ama sunucuya bağlanırken her şeyde daha çok suç sizde.
Tsya sorunu pov'yazana z tim, scho in Gmail robotu IMAP varsayılan olarak devre dışı bırakıldı. IMAP protokolünün arkasına erişim ⇒ IMAP'yi aç seçeneğindeki Hatırlatıcı POP/IMAP sekmesindeki ayarlarda kapatabilirsiniz.

IMAP protokolünün arkasındaki robotu etkinleştirdiğimiz için, bir eklenti şifresi oluştur. Bunu yapabilmek için bu profil için iki faktörlü kimlik doğrulama oluşturmamız gerekiyor. Bundan sonra yogo yaratmaya geçebilirsiniz. Program için yeni bir şifre oluşturuyorsak, sunucuya bağlanmak için MAIL_IMAP_PASS sabitine girmemiz gerekecek.

Lütfen bir ek şifre oluşturduğunuzda, arama yapmadan sunucuya bağlanamayabilirsiniz, ancak şifreniz Gmail servisi çalana kadar henüz durmadı ve 5-60 dakika ödünç aldınız.

veri toplama

Başarılı bir bağlantıdan sonra, vikonati'den sonraki bildirimlerin sunucudan kaldırılmasını talep edebiliriz. Yöntemi kimin için kazanacağız searchMailBox(dize $ ölçüt) ki bu aslında bir sarma yöntemidir imap_search. Burada $criteria argümanının bizi bilgilendirme ihtiyacı için ana kriter olduğunu anlamak önemlidir, mail bildiriminin ayrıntılı bilgisinden kurtulmamız gerektiğinden, yöntemin kendisi eleman tanımlayıcılarını döndürür.

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

Yak Vee zaten tahmin etti, burada tüm bilgileri alıyoruz.
Ve şimdi bir şaka için eşit derecede önemli diğer kriterlerle anlamaya çalışalım:

// Tüm bildirimler 3 gün içinde. $mailsIds = $mailbox->searchMailBox("BERİ "".date("d-M-Y",strtotime("-3 gün"))."""); //3 gün boyunca okunmamış bildirimler. $mailsIds = $mailbox->searchMailBox("BİRDEN GÖRÜNMEYEN" ".date("d-M-Y",strtotime("-3 gün"))."""); // TEXT başlığında böyle bir ifade için uyarı arayın. $mailsIds = $mailbox->searchMailBox("METİN "Yeni posta kutusu""); //BODY başlığında bu tür bir değeri arayın. $mailsIds = $mailbox->searchMailBox("BODY "Bilgi posta kutusu""); //Yöneticinin e-postasında arama yapın. $mailsIds = $mailbox->searchMailBox("FROM""); //SUBJECT başlığından sonraki bildirimleri kaldırın $mailsIds = $mailbox->searchMailBox("SUBJECT "Telefonunuz için güncellemeler yapın");

Kimin iyi kıçı bir şaka için muzaffer kriterlerin temellerini titretir.

Bilginin geri çekilmesi

Şimdi, bir dizi referans tanımlayıcımız varsa, onu işlemeye hazırız:

//Bildirimin geri kalanının kimliğini diziden alıyoruz. $id = bitiş($mailsIds); //Bildirim bilgilerini almak için IncomingMail sınıfının bir nesnesinin örneğine ihtiyacımız var. $mail = $mailbox->getMail($id); //Otrimuёm dosyaları, ikinci bildirimden önceki ekler ve şaraplar. $mail->getAttachments(); //Bir not gösteriliyor. echo $mail->textHtml;

Eksenler mi y otrimali z vіdomlennya z yogo eklemenin sorunsuz olduğu sayfamız.

Yetenek eklendi.

Bu kitaplık ayrıca, posta talimatlarıyla pratik çalışma için bir dizi temel yönteme sahiptir:

Lütfen yoga kimliğini unutmayın.

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

Kimliğiniz için bildirimler okunmamış olarak geri yükleniyor.

$mailbox->markMailAsUnread($id);

Yoga ID için okunmuş olarak hatırlatıcılar yüklüyoruz.

$mailbox->markMailAsRead($id);

Yoga kimliğindeki hatırlatıcı simgesine yüklenir.

$mailbox->markMailAsImportant($id);

Yoga kimliği için bir hatırlatıcı görüyoruz.

Olası zastosuvan imap işlevlerinden biri, posta dağıtımınızda bir aboneliğin keruvatı ve bir coristuvach aboneliği olan bir posta arka plan programının oluşturulmasıdır. Bu görevin uygulanması için zafer rozetlerinde iki yöntem vardır. Koristuvach'ın yana gitmekten ve eylemlerini onaylamaktan suçlu olduğu ilk ödenek, diğeri ise levhanın gücünü güçlendirmektir. Başka bir yol, hazırlama komut dosyasının cron arka plan programı tarafından düzenli olarak çalıştırıldığından emin olmaktır. Zincirler aracılığıyla ilk yol kadar popüler değil.

Ale, hatırlayacağınız gibi, vicorist'in en ciddi gülleri başka bir yoldur. Crond kazanma yeteneğine sahip olana, onunla acele et.

İşlevleri anlamak o kadar kolay değil. Eskiden Rus Halk Cumhuriyeti üzerinde çalışmış olan Lyudina, onlarla nasıl pratik yapılacağını kolayca anlıyor. Listelerin başlıkları ayrıştırılarak zorluklar aşılabilir, böylece script işlenebilir.

Vidamy senaryosunun robotik algoritması beceriksiz. Daemon, posta sunucusundan veri yükler ve yaprakların varlığını kontrol eder. Yaprak olmadığı için senaryo robotu eklenir.
Bir sayfa olarak, ilk sayfanın başlıklarını incelemek gerekir. Kimden ve konu alanları görünür. Konu alanı, iki geçerli başlık seçeneğinden birini (abonelik veya abonelik) içeriyorsa, bu durumda, kimden alanının değerinin geçerli olup olmadığı veya etkinleştiği (onaylı) veya tablodan görülebildiği kayıt. Her iki durumda da, alanda belirtilen adreste, lütfen komut dosyası hakkında ek bilgi sağlayın. Bir sonraki sayfa bir sonraki ile gösterilir. Konu, kabul edilebilir konuların intikamını almıyorsa, af hakkında bir hatırlatma uygulanır ve sayfa da kaldırılmak üzere belirlenir. Bir sonraki sayfaya gitmek için Potim betiği.
Kullanılan yaprakların seçimini bitirdikten sonra şarap kutusu temizlenir.

Akış şemalarını okumak istemiyorum, o yüzden hemen sağa geçelim. Bir posta kutusunu açmak için imap_open işlevi kullanılır. RNR kırıkları protokollerle çalışmayı destekler, çalışma için hangi protokolün seçildiğini ekran ile açıkça belirtmek gerekir. Bizimki 110 portta (standart) bir POP3 portuna sahiptir. $my_box değişiklik komut dosyasını yazmanın sonucunu davet edin.


Devam edelim ve bu değişikliğin tüm imap işlevleri için pratik olacağından emin olalım. Yaprakların varlığını kontrol etmek için bir kutu verdik. imap_num_msg işlevi yeniden doğrulamayı gerçekleştirir.

$n = imap_num_msg($my_box);

Sonuç olarak, kutudaki yaprak sayısı değiştirildi. Sayı sıfırdan büyük veya sizin için daha pahalı olabilir (boş bir kutu gibi).
Yapraklar varsa, while döngüsü yapraklara bakacak ve sırayla yaprak sayısını bir artıracaktır. Kutudaki ilk sayfanın, dizinin ilk öğesi olarak 0 numaralı anne olacağına dikkat edin.
Sayfa sayısını artırmak için $m değerini 0 olarak değiştirelim ve sonra döngünün zihinleri için bir $m++ artıralım.

Başlıkları analiz etmek için iki işlev yeterlidir: imap_header ve imap_fetch_overview. Bunların cilt bakımı için, krem ​​ekranları, sayfa numarasını belirtmek gerekir. Bize göre, şarap döngüsünün ortasında değişen $m.

imap_header, sayfa başlığı hakkında çıkarılan bilgileri almak için nesneyi sonucu döndürür. Saniyenin ortasında, intikam alınacak nesne, bir anlamın intikamını almak için bir tür dizidir. Kişisel, adl, posta kutusu ve ana bilgisayar. Biz onları daha az posta kutusu ve barındırmayız. їх göndererek, sayfanın gönderildiği adresi alıyoruz.


$h = $h -> gelen ;
a
foreach ($h as $k => $v ) (
$posta kutusu = $v -> posta kutusu;
$host = $v -> host;
$kişisel = $v -> kişisel;
$e-posta = $posta kutusu. ? @¬. $ana bilgisayar;

imap_fetch_overview - Sayfanın temasını getirmemize izin verin. Aynı amaçlar için, vicorate ve imap_header yapmak mümkün olabilir, ancak birkaç nedenden dolayı onu kullanmak mümkün olmayabilir. Fonksiyonu döndüren diziden sadece konu alanına ihtiyacımız var.


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

Daha sonra, eylemlerimiz, e-postanın tabandan kazanıldığı ve orada bariz olduğu zamanlarda, tüm satırını “geri dönüşler” gibi bir kayıtla işaretleyin veya görün. Diyelim ki sitede üyelik formunu doldurduktan sonra ön ödeme yapana 0 statüsü verildi ve abonelik onaylandıktan sonra şarabın 1 olarak değiştirildiğini varsayalım.

if ($subj == "ABONE OL" ) (
mysql_query( "GÜNCELLEME abone ol SET stat=1 WHERE e-posta=$my_email");

}
mysql_query( "NEREDE e-posta aboneliğinden SİL = $my_email");
$del = imap_delete($my_box, $m);
}
başka(
$del = imap_delete($my_box, $m);
}

yukarıda söylendiği gibi, vikonannya'dan sonra tüm senaryo kutuyu temizler.


Verilen en basit program, PHP'de yalnızca dinamik olarak değişen siteleri değil, aynı zamanda görünmeyen hizmetleri de yazabileceğinizin bir gösteriminden daha fazlasıdır. Açıkçası, kabuk için komut yazmanın bir parçası olarak, pHP rakibi Perl'in önünde durmuyor, ancak ...

Veritabanı ile bağlantının birkaç parametresi ile program ayarlarının listesi (db.php):

"db.php" içerir;
$my_box = imap_open("(you.pop.host/pop3:110)", "giriş", "şifre");
$n = imap_num_msg($my_box);
$m = 0;
$add_text="

Aboneliğinizin onaylanması için gerekli";
$add_sbj = "Sen ekledin!" ;
$del_metin = "

Vibachte, ale tsya posta ekran görüntüsü
admin_struvannya rozsilki için t_lki";
$err_sbj = "hata";
$başlıklar = Gönderen: Robota Abone Ol

Xmailer: PHP4

İçerik türü: metin/düz; karakter kümesi=UTF-8
" ;
if($n!=0) (
süre($m++< $n ) {
$h = imap_header($my_box, $m);
$s = imap_fetch_overview($my_box, $m);
$h = $h -> gelen ;
foreach ($h as $k => $v ) (
$posta kutusu = $v -> posta kutusu;
$host = $v -> host;
$kişisel = $v -> kişisel;
$e-posta = $posta kutusu. "@". $ana bilgisayar;
$my_email = mysql_escape_string($email);
}
foreach ($s as $k => $v ) (
$subj = $v -> konu ;
}
if ($subj == "ABONE OL" ) (
mysql_query( "GÜNCELLEME tablosu SET stat=1 WHERE e-postası=$my_email");
//yazdır mysql_error();
$del = imap_delete($my_box, $m);
posta ($e-posta, $add_sbj, $add_text, $başlıklar);
}
elseif ($subj == "ABONE OL" ) (
mysql_query( "WHERE e-postası = $my_email tablosundan SİL");
$del = imap_delete($my_box, $m);
posta ($e-posta, $del_sbj, $del_text, $başlıklar);
}
başka(
$del = imap_delete($open_box, $m);
mail($e-posta, $err_sbj, $err_text, $başlıklar);
}
}
$temizle = imap_expunge($my_box);
}
?>


E-posta, bilgi alışverişi için en önemli araçtır ve siz iş için karalarken, o zaman, şarkı söyleyin, duruma takılıp kalın: postaya, verilerin gıcırdama için gerekli olduğu bir sayfa gelir. Bu arada Yandex hakkında konuşalım - bu makalede sizi takip edeceğim sevgili okuyucular, sayfaları ekran görüntülerinden nasıl alacağımı bana bildirin, böylece sayfada dosya ekleri varsa seçeneği çözeceğiz - bir sonuç, üzerinde daha fazla manipülasyon için zavantazhit.

Ben kendim z zim zavdannyam zіtknuvsya uzun süre dosit ve hatta nayavnostі için küçük dosvіdu posta programları ile Yandex vytrativ zengin zaman ve gerekli sonucu elde etmek için sinirler. İlk affım, birçok web perakendecisi gibi, internette benzer hisse senetlerini yoğun bir şekilde aramaya başladım, ancak Yandex'in yardımı (ek yardım) ile hızlanmadım. Yani, yeterli olmasa da temel bilgiler var, ancak bu tür bir komut dosyası yazmak önemlidir (daha fazlası aşağıda). O zaman, özü olan bir komut dosyası yazmak gerekiyordu: xls formatında malların fiyatından Yandex'e bir mal listesi gönderdiğinizde, onu tamamlamak gerekiyordu (verileri ayrıştırmak ve ayrıştırmak için). İnternet mağazasının veritabanından, sonuca bağlı olarak, onu burada açın).

Öncelikle senaryoyu yazmadan önce yapmamız gerekenler – dokuz noktadan oluşan planımıza bir isim verelim:

  1. Posta protokolleri aracılığıyla erişim için posta göndermek mümkündür;
  2. Namіtimo PHP programının yapısı, dosyaların kodlanması için önemlidir;
  3. IMAP posta protokolü ve yetenekleri hakkında bilgi edinin;
  4. Bu aşamada oblіkovogo kaydının giriş ve şifresini ve vіdstezhimo affını göndererek Yandex'e bağlanalım;
  5. Yaprağın başını keselim;
  6. Sayfanın çalışılabilir gövdesini çıkarın;
  7. Lütfen dosya eklerine dikkat ediniz;
  8. Görselleştirilmiş robotun görselleştirilmesi;
  9. Asmaları keselim.

Konu hacimsel, ancak her şeyi mümkün olduğunca kompakt ve net hale getirmeye çalışacağım. Anne, hadi yapalım.

Nalaştuvannya postası

Posta kutumuza gidelim ve aşağıdaki ekran görüntüsünde gösterildiği gibi kuruluma gidelim:



Şimdi IMAP ve POP3 protokolleri aracılığıyla posta üzerinde birçok çalışma yaptık:


Burada resimdeki gibi resim yapacak çok insan var, ama ben bir araya geliyorum ve eğer ona erişebilirsem bir kereden fazla. Bunun için, başka bir kurulumunuz varsa, IMAP protokolü aracılığıyla erişime izin vermemiz için ekran görüntüsüne bir onay işareti koyun.

Program yapısı її kodlama

Bu uygulama için programın yapısını katlamayacağız, parçalara ihtiyaç olmayacak, ancak sadece gerekli olanları ekleyeceğiz (Sublime Text editöründe çalışıyorum):


  • tmp - yaku zavantazhuvatememo'daki bir klasör, sayfadan dosyaların eklenmesi, bu yüzden kokuşmuş є;
  • .htaccess - apache sunucusu gibi sunucu bölümünün ayarlanması;
  • function.php - burada fonksiyonlarımızı ekliyoruz;
  • main.css - stil dosyası;
  • index.php - program giriş noktası;

UTF-8'i kodlayacağız ve hemen sonraki satırlarla .htaccess dosyasını yükleyeceğiz:

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

IMAP protokolü

İlk noktaya dönersek, Yandex ile POP3 protokolü üzerinden de çalışabileceğiniz açıktır. Neden IMAP'in kendisi? IMAP kanallarından üçü daha yeni ve alternatif POP3, ayrıca bir takım gelişmeler var (wikipedia'dan kontrol edebilirsiniz), ancak sadece daha yeni olanlar seçim eşiğimize girdi. Sayfanın belirli sırası için kazananın seçimi özellikle umurumda değil. Nitekim, POP3 protokolünü değiştirmeniz gerekirse, IMAP'ten önce gerekli olacak tüm işlevler yenisi için çalışacaktır.

IMAP protokolüne yardım için göndererek Yandex'e bağlanıyoruz

Postaya bağlanmak için üç parametreyi bilmemiz gerekir: postanın oturum açma bilgisi, şifre ve posta sunucusunun adresi. İki parametrede sorun olmadığı için diğeri Yandex için bilinebilir. Tse hakkında (vinicla sorunlarım var) Ben daha çok ve merezhі kişisel olmayan uygulamalarda yazıyorum, göstergelerin üçüncü parametresi yanlış ve kendini ortaya çıkarmak için, zaten bağlantı aşamasında af - tse, en azından , kabul edilemez. Hemen ortalıkta dolaşmıyorum ve size Yandex tarafına doğrudan bir mesaj vereceğim - posta programlarının özelleştirilmesi. Bağlantı için ihtiyacımız olan:


Şimdi doğrudan kodun kendisine atlayabilirsiniz:

Header("Content-Type: text/html; charset=utf-8"); error_reporting(0); require_once("işlevler.php"); $mail_login = "yandex_mail"; $mail_password = "mail_password"; $mail_imap = "(imap.yandex.ru:993/imap/ssl)"; // Dosya türlerinin listesi $mail_filetypes = array("MSWORD"); $bağlantı = imap_open($mail_imap, $mail_login, $mail_password); if(!$connection)( echo("Posta pardon - ".$mail_login); çıkış; )else( $msg_num = imap_num_msg($bağlantı); $mails_data = array(); for($i = 1 ;$i<= $msg_num; $i++){ /* Работать с каждым письмом из IMAP-потока будем тут */ } } imap_close($connection);

Ek başlık için UTF-8 kodlaması eklemek ve af eklemek gerekir. Functions.php dosyasını ekliyoruz ve gerekirse daha önce tartışıldığı şekilde ayarladık. $mail_filetypes dizisi, ihtiyacımız olan dosya biçimlerine sahiptir. Bu nedenle, belirli dosyaları kontrol etmenin ve seçmenin gerekli olmadığından emin olmak için yapıldı. IMAP-potu uzakta döndürülüyormuş gibi, imap_open() yardım işlevinin arkasına gönderilir ve uzakta değilse false (alternatif olarak, afları artırması gerekir, ancak çok fazla değil). їійідніднання göstergesini geçerek, imap_close () yardım işlevi için iş parçacıklarıyla çalışmayı tamamlıyoruz. İki fonksiyon arasında en zeki operatör vardır.

Uzaktan yardım çağrısı imap_num_msg() ile, posta ile yaprak sayısını biliyoruz ve akıştan gerekli tüm verileri yerleştireceğimiz bir dizi ekliyoruz. Dali, numarası (numaralandırma 1 gibidir) okremo için bir deri tabakanın işlendiği bir döngü izler.

Başlık trimi

Sayfa başlığını kaldırmak için imap_header() işlevini hızlandırmak gerekir, başka bir parametre sayfa numarasıdır:

// Sayfa başlığı $msg_header = imap_header($bağlantı, $i);

Bu aşamada, veriye ihtiyacımız olan bir nesneyi alırız ve onu $mails_data dizisine kaydederiz. Sayfalardan birinin eksen poposu:

Bu ekran görüntüsünde, tüm verilerin çoğaltıldığı açıktır, ancak özel bir rol oynamazlar, daha uygun olanlar daha zordur. Daha da önemlisi - bu sayfaları kodlamak. Böyle olabilirsin ve şu anda kontrol etmen gerekiyor. Bu, sayfanın başlığı ve ek dosyaları ile durumun kendisidir.

$mails_data[$i]["zaman"] = zaman($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 $ olarak data)( $mails_data[$i]["from"] = $data->mailbox."@".$data->host; )

Dizimizde dikkate alıyoruz: zaman damgası, sayfanın geri çekildiği tarih, e-posta adresi ve hak sahibi ve bunlar tarafından sayfanın kaldırılmasına iletilir. Bunun için function.php dosyasına üç fonksiyon eklemeye başlamamız gerekiyor:

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->karakter kümesi))( $title .= convert_to_utf8($m->charset, $m->text); )else( $title .= $m->text; ) ) return $title; )

Adını söylemek gerekirse, işlevin geri kalanını açıklamak için varto düşünüyorum. Bir dizi kodlama alır ve yardım için imap_mime_header_decode() bunu çözer, bunun sonucunda nesneler dizisi döndürülür, dış görünüm iki karakter kümesi gücüne (kodlama) ve metne (konulara göre metin) sahiptir. Dali'de her şey basit: döngüde kodu yeniden kodlayın, UTF-8'e ayarlayın ve konuyu tek bir başlığa yapıştırın ve çevirin.

Şimdi index.php dosyasına dönelim ve son parametreyi alalım:

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

Bunun üzerine, sayfanın başlığı tamamlanacaktır.

Levhanın gövdesi ile Pratsiyuemo

Sayfanın değiştirilmiş verilerinden dizimizi oluşturmak için adım adım ilerliyoruz ve şimdi gövdeyi kaldırmak için iki fonksiyonla hızlandırmamız gerekiyor:

// Yaprak gövdesi $msg_structure = imap_fetchstructure($bağlantı, $i); $msg_body = imap_fetchbody($bağlantı, $i, 1);

$msg_structure'daki ilk değişiklik, harfin yapısına sahiptir - temel bilgi kütlesini bilebileceğiniz tüm nesne, temsil nesnesinin bir parçasının örneği aşağıdadır:

Görevimizin başarılması için önemli olan:

  • type - sayfa başlığının ilk türü, bizden önceki postaya ne geldiğine bağlı olarak, 0'dan 7'ye değiştirilebilir (sayfa başlığında bulunan kendi içerik türü uğruna cilt rakamları);
  • kodlama – gövde aktarımı için kodlama, 0'dan 5'e (0 – 7BIT, 1 – 8BIT, 2 – BINARY, 3 – BASE64, 4 – QUOTED-PRINTABLE, 5 – DİĞER);
  • parçalar - nesnenin birbirine eşit yapısını yansıtan mektubun bir dizi parçası.

Güç parçalarına daha yakından bakalım. İlk olarak, söylenmesi gerekenler, bunlar, dizinin sıfır ortasında, sayfanın metniyle eşleşen bilgiler ve her şeyden önce ek dosyalar. Ayrıca, tip i, dış görünüm nesnesi için açık ve örtük görünümlerdeki kodlama parametrelerinde belirtilir.

Sayfanın yapısı ölçeklenebilir bir şekilde yatırılabilir, eğer bazı dalgalanmalar olsaydı, chotiriox'a gelirse - beş eşittir, o zaman özyinelemeli bir fonksiyon yazma fırsatına sahip olmamız gerekirdi.

Başka bir imap_fetchbody() işlevi, çoğu kodlanmış sayfanın yalnızca bir bölümünü getirir.

Şimdi bir değişiklik ekleyeceğim, bir şekilde sayfanın gövdesinin genelleştirilmiş bir versiyonunu kaydedeceğim:

$vücut = "";

Function.php dosyasına dönelim ve özyinelemeli bir fonksiyon yazalım:

function recursive_search($structure)( $encoding = ""; if($structure->subtype == "HTML" || $structure->type == 0)( if($structure->parameters->attribute == " karakter kümesi")( $karakter kümesi = $yapı->parametreler->değer; ) dönüş dizisi("kodlama" => $yapı->kodlama, "karakter kümesi" => strtolower($karakter kümesi), "alt tür" => $yapı- >subtype); charset = $structure->parameters->value; ) return array("encoding" => $structure->encoding, "charset" => strtolower($charset), "subtype" => $structure-> alt tip); )

recursive_search() işlevi bir parametreyi kabul eder - sayfanın yapısı ve ardından gücü değiştirir ve üç parametre alır: kodlama, karakter kümesi, alt tür. Özyinelemeden çıkış noktası, sıfır merkezli parçaların gücünün ortaya çıkmasıdır. Burada açıklanacak fazla bir şey yok, sanırım koddan ne olduğunu anladım.

Gelecekte ihtiyaç duyacağımız gibi, sayfanın gövdesini dönüştürmek için bir işlev daha ekleyelim:

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; durum 2: $body = imap_binary($msg_body); break; durum 1: $body = imap_8bit($msg_body); break; ;)

$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); 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);

Ek olarak, özyinelemeden verileri alırken, aktarımı adım adım yeniden kodluyoruz ve ardından uygun parametrelerle Structure_encoding() işlevini çağırıyoruz. Akıllı operatörün geri kalanında, UTF-8'de uygulanabilir olanlar korunur ve sahip olduğumuz tüm manipülasyonlardan sonra bile kodu göreceğiz, yeniden kodlanacak.

Arasında kayıp:

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

Sayfanın başlığı hem özel bir metne hem de kendi stillerine sahip bir HTML düzenine sahip olabilir. BASE64'te kodlanmıştır, bu nedenle yerleşimimiz oluşturma sırasında çalışmadı.

Dosya ekleri

Eksen, programımızın sonuna kadar sorunsuzca tırmanın:

// Dosyaları ekle if(isset($msg_structure->parts))( for($j = 1, $f = 2; $j< count($msg_structure->parçalar); $j++, $f++)( if(in_array($msg_structure->parts[$j]->subtype, $mail_filetypes))( $mails_data[$i]["ekler"][$j]["type"] = $msg_structure->parts[$j]->subtype;$mails_data[$i]["attachs"][$j]["size"] = $msg_structure->parts[$j]->bytes; $i] ["attachs"][$j]["name"] = get_imap_title($msg_structure->parts[$j]->parameters->value); $mails_data[$i]["ekler"][$ 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]["ekler"][$j]["ad"]), $mails_data[$i]["ekler"][$j]["dosya"]); )

Shmatok, ekli dosyanın işlenmesi için scho vіdpovіdaє daha az zengin, ama şimdi neden böyle. Bir dosya ile çalışma prensibi, sayfanın gövdesine benzer, sadece bu aşama, güç parçaları dizisindeki yogadan onarılır. Tür listesine bakarak yaygın olmayanları dikkate almayı unutmayın. file_put_contents() basit fonksiyonunun yardımı için dosyayı sunucumuza tmp klasörüne kaydediyoruz.

Sonuç almak istiyorum!

Çalışma sürecinde $mails_data verilerinden bir dizi oluşturduk ve görselleştirme için zaten doğrudan onunla çalışıyoruz. Bu yazımda mailimde duran bir test kağıdı yaptım, acaba sonuç olarak bize ne oldu:


Bir tür eksen diziden ayrılmaktan yaklaşık olarak sorumludur, ne yazık ki dosyayı özel nedenlerle dosyaya ekledim. Şimdi HTML işaretlememize geçelim:

Yandex Posta |<?php echo($mail_login);?>

Yandex Postası (Vhіdnі) |

Yaprak sayısı:

yaprak yok
$posta):?>
Timchas işareti:
Tarih:
Kime:
Tip:
Başlık:
Base64 sayfası:
Ekli dosyalar:
$ek):?>
Bir çeşit:
Rozmir (bayt cinsinden):
İsim:
Gövde:

Buraya stil eklemeyeceğim, sonuç olarak kokuşmuş kırıklar özel bir rol oynamıyor:


Ve sunucuda tmp klasöründe bir dosyanız olacak.

Visnovok

İstatistiklerin tüm aşamalarını tamamladıktan sonra, güvenilir bir sonuç elde edeceksiniz, ancak her şey inşa edebileceğiniz kadar basit değil - su taşları, vrakhovuvat yapmak gerekiyor. Belirli bir görev için bir komut dosyası yazarken, tüm aşamalarda kodlamayı takip etmek gerekir, sayfalar farklı postalardan gidebilir, cildin kendi nüansları olabilir. Bu nedenle Yandex postasının ve dokümantasyonunun periyodik olarak güncellenmesini sağlamak çok önemli olacaktır, bu da posta programlarıyla çalışmak için farklı noktalara neden olabilir. Her şeye sahip olduğumda, sizi zamanında destekliyorum, Yandex postasının daha düşük bir sürümüne sahip bir robotla bir makale verildi.

Eklerden sayfayı girmeyin (
postayı dosyayla nasıl zorlayabilirim - öyle olsun - o zaman sayfanın metni kaybolur

Nazik olmaya yardım et

Aklıma geldi ... Yandex'den Yandex'e bir posta gönderirseniz, her şey gider ...
çözüldü
ale ekseni neden diğer dosyaları suç sözcüğü bu komut dosyası kabul edilmiyor anlaşılmadı ... i pdf i zhpg i png koyarak bir dizi MSWORD sırası var - normalde sadece kelimeyi okuyor ve seçiyor .... böyle

© 2022 androidas.ru - Android hakkında her şey