Advanced Email Parcer-ის მიმოხილვა - პროგრამული უზრუნველყოფა ელექტრონული ფოსტის დამუშავების ავტომატიზაციისთვის. ჩვენ ვიღებთ წერილებს ფოსტიდან. ჩვენ ვმუშაობთ IMAP პროტოკოლით

» PHP Sendmail Script

PHPSendMail

ფორმის გამოსაყენებლად, თქვენ უბრალოდ უნდა შეიყვანოთ თქვენი ელ.ფოსტის პარამეტრები და ეს არის ის. ზოგადად, სკრიპტი მზად არის გამოსაყენებლად და ეს უკუკავშირის ფორმა საიტისთვის HTML-ში PHP პროცესორით იდეალურია მცირე საიტებისთვის, სავიზიტო ბარათების საიტებისთვის.

| გადმოწერილი: ჯერ

მარტივი PHP ფოსტის გაგზავნა

ამ ძალიან მარტივი PHP სკრიპტით, თქვენი ვებსაიტის ვიზიტორებს შეეძლებათ გამოგიგზავნოთ ელ.წერილი პირდაპირ გამოხმაურების ფორმის საშუალებით.

| გადმოწერილი: ჯერ

PHP + AJAX სკრიპტი ელ.ფოსტაზე ფორმების გასაგზავნად

უნივერსალური სკრიპტი ფორმებიდან ელფოსტაზე მონაცემების გასაგზავნად. სკრიპტი იდეალურია საიტებისთვის, როგორიცაა Landing Page, სავიზიტო ბარათების საიტები და ა.შ.

| გადმოწერილი: ჯერ

PHP Mailer Final captcha-ით

სკრიპტი აჩვენებს ფორმას და, როდესაც შეავსებთ საჭირო ველებს, აგზავნის შეტყობინებას თქვენს ელ. ფოსტაზე. სკრიპტს აქვს ჩაშენებული დაცვა რობოტებისგან: წერილის გაგზავნამდე უნდა შეიყვანოთ captcha.

| გადმოწერილი: ჯერ

GentleSource ფორმა ფოსტა

თქვენ გაქვთ არჩევანის ორი ვარიანტი: ან მომხმარებელი, გადამისამართების გამოყენებით, მოხვდება მადლობის გვერდზე თქვენი ტექსტით, ან მომხმარებელს ეჩვენება ინფორმაცია, რომ შეტყობინება წარმატებით გაიგზავნა.

| გადმოწერილი: ჯერ

მიკრო მეილერი

Micro Mailer არის პატარა PHP სკრიპტი, რომელიც საშუალებას გაძლევთ და თქვენი ვებსაიტის ვიზიტორებს გაუგზავნოთ წერილი ნებისმიერ მიმღებს.

| გადმოწერილი: ჯერ

Web4you-FM

Web4you-FM წერილის გაგზავნა თქვენი ვებსაიტიდან. მახასიათებლები: 1 - აირჩიეთ მიმღები და რამდენი იქნება (1-დან 4-მდე). 2 - შეამოწმეთ, რომ ფორმა სწორად არის შევსებული. Ვის. სახელები, მხოლოდ ასოები...

| v.1.0 | გადმოწერილი: ჯერ

მსუბუქი PHP საკონტაქტო ფორმა

გამოხმაურების ფორმის საშუალებით ფოსტის გაგზავნის სკრიპტი იმდენად მარტივია, რომ PHP/HTML არმცოდნე ადამიანსაც კი შეუძლია უპრობლემოდ გამოიყენოს პროგრამა...

| გადმოწერილი: ჯერ

DodosMail

DodosMail არის ადვილად ინსტალირებული PHP სკრიპტი, რომელიც საშუალებას გაძლევთ გააგზავნოთ ელ.წერილი თქვენს ვებსაიტზე გამოხმაურების ფორმის საშუალებით. თქვენ უბრალოდ უნდა ატვირთოთ php ფაილი.

| v.2.5 | გადმოწერილი: ჯერ

PHP საკონტაქტო ფორმა

PHP საკონტაქტო ფორმის სკრიპტი მოიცავს შემდეგ ფუნქციებს: 1) სპამის პრევენციის ფუნქცია. მომხმარებელმა უნდა შეიყვანოს უსაფრთხოების კოდი, რომელიც ასევე ცნობილია როგორც captcha.

| გადმოწერილი: ჯერ

TPCS კონტაქტი (ელფოსტის ფორმა)

ეს TPCS საკონტაქტო სკრიპტი თქვენს ვიზიტორებს საშუალებას მისცემს დაგიკავშირდეთ უკუკავშირის ფორმის საშუალებით. ყველა ინფორმაცია გამოგიგზავნეთ ელექტრონული ფოსტით.

| გადმოწერილი: ჯერ

უკუკავშირის გამგზავნი

Feedback mailer გადამისამართებს ყველა ინფორმაციას თქვენი ვებსაიტის გამოხმაურების ფორმიდან პირდაპირ თქვენს ელფოსტაზე. ეს პატარა სკრიპტი ამუშავებს ყველა მოთხოვნას ძალიან სწრაფად.

| v.1.2 | გადმოწერილი: ჯერ

მარტივი PHP საკონტაქტო ფორმა

მარტივი, მაგრამ უსაფრთხო PHP სკრიპტი ვებმასტერთან დასაკავშირებლად, გამოხმაურების ფორმის გამოყენებით კოდის დადასტურებით (CAPTCHA), სპამის თავიდან ასაცილებლად.

| v.2.1 | გადმოწერილი: ჯერ

PHP საკონტაქტო ფორმა (სურათის დადასტურებით)

საკონტაქტო ფორმა, რომელიც ხელს უშლის სპამს მომხმარებლისგან სურათიდან უსაფრთხოების კოდის შეყვანის თხოვნით. თუ იყენებთ გამოხმაურების ძალიან მარტივ ფორმას, ადრე თუ გვიან სპამერები იპოვიან გზას ავტომატურად გამოგიგზავნონ რეკლამა.

| გადმოწერილი: ჯერ

CW3 ფორმა ფოსტა

სკრიპტის ინსტალაცია და მორგება ძალიან მარტივია თქვენი საიტის გარეგნობის შესატყვისად. თქვენ შეგიძლიათ შეცვალოთ გამოხმაურების ფორმის ზომა და წერილის ტექსტი, რომელიც გამოჩნდება წერილის წარმატებით გაგზავნისას.

| ვ.3.30 | გადმოწერილი: ჯერ

reCAPTCHA საკონტაქტო ფორმა

ეს უფასო PHP გამოხმაურების სკრიპტი აადვილებს ელ.წერილების ან გამოხმაურების მიღებას თქვენი ვიზიტორებისგან. თქვენმა ვიზიტორმა მხოლოდ უნდა შეავსოს ყველა საჭირო საკონტაქტო ველი...

| v.1.4 | გადმოწერილი: ჯერ

phMailer

phMailer არის ძალიან მარტივი PHP გამოხმაურების სკრიპტი, რომელიც მხარს უჭერს ფაილის დანართებს PHP ენის ჩაშენებული mail() ფუნქციის წყალობით.


ყველა, ვინც იყენებს ელექტრონულ ფოსტას (და ეს არის ინტერნეტის მომხმარებელთა უმრავლესობა) ცდილობს შემომავალი შეტყობინებების განთავსებას ისე, რომ მოსახერხებელი იყოს მათთან მუშაობა, რათა მათ სწრაფად და მარტივად იპოვონ მათთვის საჭირო. ამისთვის საფოსტო ყუთში იქმნება დამატებითი საქაღალდეები და გამოყენებული ელ.ფოსტის კლიენტიდან გამომდინარე, შემომავალი წერილები ასე თუ ისე დალაგებულია. ყველაზე ხშირად, დამუშავება ხორციელდება საფოსტო მისამართებისა და საფოსტო სიების გამოყენებით, რომლებზეც მომხმარებელია გამოწერილი. შეგიძლიათ დაალაგოთ შეტყობინების თემა და საკვანძო სიტყვები. მაგრამ ეს ყველაფერი კეთდება ელექტრონული ფოსტის პროგრამებში.

მაგრამ Tweek Marketing კომპანია გვთავაზობს მსგავსი სქემის გამოყენებას, მაგრამ მისი გამოყენების შესაძლებლობების გაფართოებას. Advanced Email Parcer (AEP) გადაწყვეტაში, შემომავალი კორესპონდენცია მუშავდება ელ.ფოსტის კლიენტის გარეთ და ActiveX კონტროლის გამოყენებით, შესაძლებელია პროგრამის ინტეგრირება ნებისმიერ პროგრამასთან, რომელიც მხარს უჭერს ამ ტექნოლოგიას. ინტეგრაცია ხორციელდება სკრიპტირების ენების გამოყენებით, რომელიც დაფუძნებულია Microsoft Active Scripting ტექნოლოგიაზე. სკრიპტირების ენების უმეტესობის გამოყენება შესაძლებელია, მათ შორის JScript და VBScript.

ამ პროგრამის გამოყენებით შეგიძლიათ რამდენიმე რუტინული ოპერაციების ავტომატიზაცია. მაგალითად, შეგიძლიათ ავტომატიზირება:

  • ელექტრონული ფოსტით გაგზავნილი შეკვეთების ფორმებისა და კითხვარების დამუშავება;
  • შეკვეთების მონაცემთა ბაზის შევსება;
  • ფოსტის ნაკადების დახარისხება და გადამისამართება;
  • საფოსტო სიების შედგენა, სხვადასხვა სტატისტიკის წარმოება;
  • ავტომატური რეაგირების სერვისების შექმნა, ელექტრონული ფოსტის რობოტები;
  • მნიშვნელოვანი ელ.ფოსტის შეტყობინებების სარეზერვო ასლის შექმნა.

პროგრამას შეუძლია იმუშაოს ორ ძირითად რეჟიმში - შუამავალი რეჟიმი, როდესაც AEP მოქმედებს როგორც შუალედური პროცესორი ფოსტის სერვერსა და კლიენტს შორის ინტერფეისში და კოლექციონერის რეჟიმში, რომელშიც პროგრამა დამოუკიდებლად უერთდება ფოსტის სერვერს და, დამოკიდებულია ანგარიშზე. პარამეტრები, ამუშავებს შეტყობინებებს და შლის ან ტოვებს მათ სერვერზე (დამოკიდებულია თქვენი ანგარიშის პარამეტრებზე). შუამავლის სახით დაკავშირებისას, ფოსტის კლიენტის კავშირი ხელახლა კონფიგურირებულია. ახალი პარამეტრი ჰგავს პარამეტრს სპამის ფილტრებთან მუშაობისას, როდესაც კლიენტი უერთდება არა სერვერს, არამედ შუალედურ პროცესორს. (მაინტერესებს ამ შემთხვევაში როგორ დავაყენოთ პარსერიც და სპამის ფილტრიც?)

AEP-ის მიერ მიღებული შეტყობინებები მუშავდება ფილტრებისა და დამუშავების კომპონენტებისგან ჩამოყალიბებული წესების სიის გამოყენებით. ფილტრები სრულდება თანმიმდევრულად და განსაზღვრავს, დამუშავდება თუ არა შეტყობინება. ის შეტყობინებები, რომლებიც ექვემდებარება ერთ-ერთ წესს, მოთავსებულია რიგში, რომლის დამუშავება იწყება ფოსტის სერვერიდან ყველა ახალი შეტყობინების ჩამოტვირთვის შემდეგ. დამუშავების შედეგები მოგვიანებით შეიძლება იხილოთ ჟურნალში, რომელიც აღრიცხავს ყველა მოვლენას.

დამუშავების კომპონენტები ამოღებულია, ცვლის და ინახავს კონკრეტულ მონაცემებს შეტყობინებებიდან. დამუშავების დროს შესაძლებელია მონაცემების შენახვა გარე ფაილებში, გადატანა სხვა პროგრამებში, დამუშავება სკრიპტების გამოყენებით და შეცვლა შაბლონების გამოყენებით. წესებისა და კომპონენტების გენერირებისთვის გამოიყენება სპეციალური კონსტრუქტორი, რომელიც ასევე უზრუნველყოფს გამართვას ტესტის მონაცემების საფუძველზე (ისინი შეიძლება შეიქმნას ფაილის სახით ან გამართვა შეიძლება შესრულდეს შემომავალ შეტყობინებებზე).

წესების ფორმირების თანმიმდევრობა დეტალურად არის ნაჩვენები დეველოპერის ვებსაიტზე ონლაინ ტურის სახით. სამწუხაროა, რომ ის არ არის შეტანილი დოკუმენტაციაში, მაშინ ბევრად უფრო მარტივი იქნება მუშაობა და უფრო ადვილი იქნება დაყენების დაუფლება. მიუხედავად ამისა, ვნახოთ, როგორ ყალიბდება წესები.

მაგალითად, როგორ შევქმნათ საფოსტო სია შემომავალი შეტყობინებების საფუძველზე. შევქმნათ ახალი წესი და მივცეთ სახელი. პირველი რაც თქვენ უნდა გააკეთოთ არის შემომავალი შეტყობინების დამუშავება. ჩვენ ვივარაუდებთ, რომ დაგზავნის სიაში შედის მხოლოდ ის რესპონდენტები, რომლებმაც გაგზავნეს წერილი გარკვეული სათაურით. ამიტომ, პირველი ფილტრი უნდა იყოს კონფიგურირებული, რათა შეარჩიოს ასოები ამ სათაურით. წესს დავამატოთ ფილტრი (Subject Filter) და თვისებებში Contains ველში დავამატოთ საჭირო თემა.

იმ შეტყობინებებიდან, რომლებიც შეირჩევა ამ ფილტრის მიერ, აუცილებელია აირჩიოთ გამგზავნის სახელი და მისამართი. ამისთვის ვიყენებთ შერჩევის ფუნქციას (Line Parcer). ჩვენ მას ვამატებთ მხოლოდ ხელმისაწვდომი ფუნქციების ხიდან გენერირებულ წესში გადათრევით. უნდა იყოს ორი ფუნქცია: ერთი დაამუშავებს ველს, რომელიც შეიცავს გამგზავნის სახელს, მეორე დაამუშავებს ველს მისი მისამართით (გამომგზავნის სახელი და გამგზავნის ელ. ფოსტა). არჩეული მონაცემები შეინახება თქვენ მიერ განსაზღვრულ ცვლადებში. ახლა მათ გადარჩენა სჭირდებათ.

მიღებული მონაცემების შესანახად გამოიყენეთ File Writer ფუნქცია. დავამატოთ ის წესში ისევე, როგორც წინა ფუნქციები. ახლა თქვენ უნდა დააკონფიგურიროთ მისი თვისებები. ეს მოიცავს ფაილის სახელს, რომელშიც ინფორმაცია ჩაიწერება. ინფორმაციის ჩაწერის შაბლონში შევიტანთ საჭირო მონაცემების შემცველი ცვლადების სახელებს. თქვენ უნდა დაასრულოთ სტრიქონი ცვლადებით დაბრუნებით, რათა შემდეგი ჩანაწერი დაიწყოს ახალი ხაზით. და აირჩიეთ ვარიანტი - ჩაწერეთ ახალ ფაილში ან დაამატეთ არსებულს. (თუ ის ახალია, შეგიძლიათ მიანიჭოთ პრეფიქსი ფაილის უნიკალური სახელის შესაქმნელად.)

რჩება მხოლოდ იმის შემოწმება, არის თუ არა წესი მომზადებული სწორად. ამისათვის შექმენით ფაილები სატესტო შეტყობინებებით და ატვირთეთ ისინი წესზე მართვის პანელის მეშვეობით (ისინი გამოჩნდება Debug Messages განყოფილებაში). ახლა შეგიძლიათ ტესტირების პროცესის გაშვება და შედეგების ნახვა გამართვის ჟურნალში. ეს შედეგები დაგეხმარებათ ნათლად განსაზღვროთ, არის თუ არა შეცდომები თქვენს წესში. თუ შეცდომები არ არის, მაშინ წესი შეიძლება გამოყენებულ იქნას შემომავალი ფოსტის დასამუშავებლად. თუ თქვენ გაქვთ არა ერთი წესი, არამედ რამდენიმე, მაშინ ერთი და იგივე შეტყობინება შეიძლება დამუშავდეს რამდენიმე წესით. ამ პარამეტრის უზრუნველსაყოფად, შეამოწმეთ Continue With Next Rule პუნქტი წესის თვისებებში.

თქვენ ასევე შეგიძლიათ შექმნათ დანართების დამუშავების წესი - მათი ავტომატურად შენახვა. შემომავალი დამუშავება ხორციელდება შეტყობინების სათაურის ანალიზის საფუძველზე, რომელიც დანართების შემთხვევაში უნდა შეიცავდეს სიტყვას მრავალნაწილიანი. დისკზე დანართების შესანახად არის სპეციალური ფუნქცია - Attachments Writer. ეს კომპონენტი საშუალებას გაძლევთ მიუთითოთ ცვლადების სია, რომელშიც განთავსდება შენახული ფაილების სახელები, ასევე საქაღალდე, რომელშიც ისინი შეინახება. იმავე სახელის ფაილების გაჩენის თავიდან ასაცილებლად, შეგიძლიათ ფაილის სახელს დაამატოთ თარიღი და დრო. ეს მონაცემები მიიღება დანართების დისკზე შენახვის დროს.

როგორც დამატებითი დამუშავება, შეგიძლიათ მიუთითოთ რომელი ფაილების შენახვა გსურთ. მაგალითად, ეს უნდა იყოს ფაილები გარკვეული გაფართოებით. ამისათვის თქვენ უნდა გამოიყენოთ FileSystemObject-ის DeleteFile ფუნქცია. ეს ობიექტი იქმნება და გამოიყენება JScript კომპონენტის კოდში.

თქვენ ასევე შეგიძლიათ შექმნათ წესი რესპონდენტთა მოთხოვნებზე პასუხის გასაცემად. მაგალითად, თუ ისინი ითხოვენ გარკვეულ დოკუმენტაციას. განვსაზღვროთ, რომ ამისთვის წერილის საგანს უნდა ჰქონდეს გარკვეული ფორმატი, ხოლო თავად წერილები უნდა გაიგზავნოს გარკვეულ მისამართზე. ამიტომ, პირველ რიგში, ვირჩევთ ამ მისამართის ასოებს, შემდეგ კი ვფილტრავთ შეტყობინებებს მათი თემის მიხედვით. (მისამართის მიხედვით გასაფილტრად გამოიყენეთ მიმღების ელფოსტის ფილტრი.)

შემდეგი ნაბიჯი არის გამგზავნის მისამართის დადგენა (ზემოთ აღწერილის მსგავსი). შემდეგი, შეტყობინების თემიდან, თქვენ უნდა აირჩიოთ დოკუმენტის სახელი, რომელსაც მომხმარებელი ითხოვს. ჩვენ ვინახავთ ამ მონაცემებს ჩვენ მიერ განსაზღვრულ ცვლადებში. პასუხის გასაგზავნად გამოიყენეთ SMTP Sender ფუნქცია (მაგრამ მანამდე თქვენ ასევე უნდა შეამოწმოთ მოთხოვნილი დოკუმენტის სახელი სისწორისთვის, რაც შეიძლება გაკეთდეს Simple Condition ფუნქციის გამოყენებით).

SMTP Sender ფუნქციისთვის, მის თვისებებში ჩვენ მივუთითებთ წერილის საგანს და ტექსტს, რომელიც გაიგზავნება. მოპასუხის მიერ მოთხოვნილი დოკუმენტაცია იგზავნება დანართად. თუ თქვენს მომხმარებელს შეუძლია მოითხოვოს სხვადასხვა დოკუმენტაცია, მაშინ თითოეული მათგანის გასაგზავნად თქვენ უნდა შექმნათ საკუთარი დამუშავების ფუნქცია. ეს შეიძლება გაკეთდეს პირველი შექმნილი დამუშავების კოპირებით და მისი თვისებების კორექტირებით.

აქ წარმოდგენილი იყო პროგრამის გამოყენების განხორციელებული მაგალითები. მაგრამ თქვენ შეგიძლიათ მოიფიქროთ სხვა ვარიანტები. პროგრამას აქვს საკმაოდ მრავალფეროვანი შესაძლებლობები და ფუნქციების ფართო სპექტრი. თუმცა, ელ.ფოსტის კლიენტებში შეტყობინებების დამმუშავებლების დაყენებასთან შედარებით, AEP-ის დაყენება უფრო რთულია, რადგან აქ ის მაინც უფრო მეტად არის ორიენტირებული პროგრამისტებზე და არა ჩვეულებრივ მომხმარებლებზე. მაგრამ რადგან პროგრამა განკუთვნილია კომპანიაში გამოსაყენებლად, ალბათ იქ იქნება სისტემის ადმინისტრატორი, რომელსაც შეუძლია ამ სისტემის კონფიგურაცია.


ელექტრონული ფოსტა ინფორმაციის გაცვლის უმნიშვნელოვანესი ინსტრუმენტია და თუ მას სამუშაოდ იყენებთ, ალბათ შეგხვდათ სიტუაცია: ფოსტაში მოდის წერილი, რომელიც შეიცავს ნულიდან დასამუშავებლად საჭირო მონაცემებს. ჩვენ ვისაუბრებთ Yandex ფოსტაზე - ამ სტატიაში გაგიზიარებთ, ძვირფასო მკითხველებო, ჩემს გამოცდილებას იმის შესახებ, თუ როგორ უნდა ამოიღოთ წერილები საფოსტო ყუთიდან, ასევე განვიხილავთ ვარიანტს, როდესაც წერილი შეიცავს თანდართულ ფაილს - როგორ ამოვიცნოთ იგი და საბოლოოდ ჩამოტვირთეთ იგი მასთან შემდგომი მანიპულირებისთვის.

მე თვითონ შევხვდი ამ პრობლემას საკმაოდ დიდი ხნის წინ და შემდეგ, მიუხედავად იმისა, რომ Yandex-ის ელ.ფოსტის პროგრამებთან მუშაობის მცირე გამოცდილება მქონდა, დიდი დრო და ნერვები დავხარჯე საჭირო შედეგის მისაღწევად. ჩემი პირველი შეცდომა ის იყო, რომ, როგორც ბევრი ვებ დეველოპერი, მეც დავიწყე მსგავსი მაგალითების ინტენსიური ძებნა ინტერნეტში, მაგრამ თავად Yandex დახმარება არ გამომიყენებია. დიახ, აქ არის სასარგებლო ინფორმაცია, თუმცა ის ძალიან მცირეა, მაგრამ საკმარისად მნიშვნელოვანია ამ ტიპის სკრიპტის დაწერა (დაწვრილებით ამის შესახებ ქვემოთ). იმ დროს საჭირო იყო სკრიპტის დაწერა, რომლის არსი იყო: წერილი xls ფორმატში საქონლის ფასების ჩამონათვალით იგზავნებოდა მომხმარებლის Yandex ფოსტაზე დღეში ერთხელ, უნდა დამუშავებულიყო (გაანალიზებული და შედარება მონაცემები ონლაინ მაღაზიის მონაცემთა ბაზიდან და, შედეგიდან გამომდინარე, რაღაც განაახლეთ სადმე, გამორთეთ ან ჩართეთ).

და პირველი, რასაც გავაკეთებთ სცენარის დაწერამდე, არის ჩვენი სამოქმედო გეგმის გამოკვეთა, რომელიც შედგება ცხრა პუნქტისგან:

  1. მოდით დავაკონფიგურიროთ ფოსტა, რათა მივიღოთ წვდომა ფოსტის პროტოკოლებით;
  2. მოდით გამოვყოთ PHP აპლიკაციის სტრუქტურა და გადავწყვიტოთ ფაილის კოდირება;
  3. გავეცნოთ IMAP ფოსტის პროტოკოლს და მის შესაძლებლობებს;
  4. მოდით დავუკავშირდეთ Yandex ფოსტას თქვენი ანგარიშის შესვლისა და პაროლის გამოყენებით და თვალყური ადევნოთ შეცდომებს ამ ეტაპზე;
  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 პროტოკოლი

პირველ პუნქტს რომ დავუბრუნდეთ, ხედავთ, რომ ასევე შეგიძლიათ Yandex ფოსტით იმუშაოთ POP3 პროტოკოლის საშუალებით. რატომ IMAP? ამ ორიდან IMAP არის POP3-ის ახალი და ალტერნატივა, ამიტომ მას აქვს მთელი რიგი უპირატესობები (შეგიძლიათ შეისწავლოთ ისინი ვიკიპედიის გამოყენებით), მაგრამ ჩვენს შემთხვევაში არჩევანზე გავლენა იქონია მხოლოდ იმ ფაქტმა, რომ ის უფრო ახალია. პირადად მე ვერ ვხედავ დიდ განსხვავებას, თუ რა გამოვიყენო წერილის მიღების კონკრეტული ამოცანისთვის. თუ რაიმე მიზეზით გჭირდებათ POP3 პროტოკოლის გამოყენება, მაშინ ყველა ფუნქცია, რომელიც ეხება IMAP-ს, იმუშავებს მისთვის.

Yandex ფოსტასთან დაკავშირება IMAP პროტოკოლის გამოყენებით

ფოსტასთან დასაკავშირებლად საჭიროა ვიცოდეთ სამი პარამეტრი: ფოსტის შესვლა, მისი პაროლი და ფოსტის სერვერის მისამართი. თუ ორი პარამეტრის პრობლემა არ არის, მაშინ მეორე შეგიძლიათ ნახოთ Yandex-ის დახმარებაში. მე დავწერე ამის შესახებ (პრობლემა, რომელიც წარმოიშვა ჩემთვის) ზემოთ და დავწერე ინტერნეტში უამრავი მაგალითი, სადაც მესამე პარამეტრი არასწორად არის მითითებული და, წარმოიდგინეთ, რომ შეცდომები უკვე ხდება კავშირის ეტაპზე - ეს, მინიმუმ, უსიამოვნოა. . მე არ ვეცემი ბუჩქის გარშემო და დაუყოვნებლივ მივცემ პირდაპირ ბმულს Yandex-ის გვერდზე - ელ.ფოსტის პროგრამების დაყენება. აი ზუსტად ის, რისი დაკავშირება გვჭირდება:


ახლა თქვენ შეგიძლიათ პირდაპირ გადახვიდეთ თავად კოდზე:

Header("შინაარსის ტიპი: text/html; charset=utf-8"); შეცდომის_მოხსენება(0); require_once ("functions.php"); $mail_login = "yandex_mail"; $mail_password = "ფოსტის_პაროლი"; $mail_imap = "(imap.yandex.ru:993/imap/ssl)"; // მხედველობაში მიღებული ფაილის ტიპების სია $mail_filetypes = array("MSWORD"); $კავშირი = imap_open ($mail_imap, $mail_login, $mail_password); if(!$connection)( echo("შეცდომა ფოსტასთან დაკავშირებისას - ".$mail_login); გამოსვლა; )else($msg_num = imap_num_msg($connection); $mails_data = array(); for($i = 1; $ მე<= $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($კავშირი, $i);

ამ ეტაპზე ჩვენ მივიღებთ ობიექტს, საიდანაც გამოვიტანთ საჭირო მონაცემებს და შევინახავთ მას $mails_data მასივში. აქ არის ერთ-ერთი წერილის მაგალითი:

ეს სკრინშოტი აჩვენებს, რომ ყველა მონაცემი დუბლირებულია, მაგრამ ეს არ თამაშობს განსაკუთრებულ როლს, ჩვენ ვიყენებთ იმას, რაც უფრო მოსახერხებელია. გაცილებით მნიშვნელოვანია წერილის სათაურის ხაზის კოდირება. ეს შეიძლება იყოს ყველაფერი და ეს მომენტი უნდა იყოს კონტროლირებადი. იგივე სიტუაცია ეხება წერილის ნაწილს და თანდართულ ფაილებს.

$mails_data[$i]["time"] = დრო ($msg_header->MailDate); $mails_data[$i]["date"] = $msg_header->MailDate; foreach($msg_header->to, როგორც $data)( $mails_data[$i]["to"] = $data->mailbox."@".$data->host; ) foreach($msg_header->from როგორც $ მონაცემები)($mails_data[$i]["from"] = $data->mailbox."@".$data->მასპინძელი;)

ჩვენ ვინახავთ ჩვენს მასივში: დროის ნიშანს, წერილის მიღების თარიღს, მიმღების და გამგზავნის ელფოსტას და ვაგრძელებთ წერილის თემის მიღებას. ამისათვის ჯერ უნდა დავამატოთ სამი ფუნქცია functions.php ფაილში:

ფუნქცია check_utf8($charset)( if(strtolower($charset) != "utf-8")( return false; ) return true; ) ფუნქცია convert_to_utf8($in_charset, $str)( return iconv(strtolower($in_charset), "utf-8", $str ) ფუნქცია get_imap_title($str)($mime = imap_mime_header_decode($str); $title = ""; foreach($mime როგორც $key => $m)(if(!check_utf8); ($m->charset))( $title .= convert_to_utf8 ($m->charset, $m->text); )else( $title .= $m->text; ) ) დააბრუნეთ $title )

სახელები თავისთავად გასაგებია და ვფიქრობ, მხოლოდ ბოლო ფუნქციის ახსნა ღირს. ის იღებს დაშიფრულ სტრიქონს და იყენებს imap_mime_header_decode() მის გაშიფვრას, რის შედეგადაც მიიღება ობიექტების მასივი, თითოეულს აქვს ორი თვისება: სიმბოლოების ნაკრები და ტექსტი. შემდეგ ყველაფერი მარტივია: შეამოწმეთ კოდირება მარყუჟში, გადააკეთეთ იგი UTF-8-ში და გააერთიანეთ თემა ერთ სათაურში და დააბრუნეთ იგი.

ახლა დავუბრუნდეთ index.php ფაილს და ამოვიღოთ ბოლო პარამეტრი:

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

ეს ასრულებს ელ.ფოსტის სათაურის დამუშავებას.

წერილის სხეულთან მუშაობა

ჩვენ ვაგრძელებთ თანდათანობით ჩვენი მასივის ჩამოყალიბებას ასოს დამუშავებული მონაცემებით და ახლა სხეულის მისაღებად საჭიროა გამოვიყენოთ ორი ფუნქცია:

// ელფოსტის ტექსტი $msg_structure = imap_fetchstructure($connection, $i); $msg_body = imap_fetchbody ($ კავშირი, $i, 1);

პირველი ცვლადი $msg_structure შეიცავს ასოს სტრუქტურას - ეს არის ობიექტი, რომელშიც შეგიძლიათ იპოვოთ ბევრი სასარგებლო ინფორმაცია, ამ ობიექტის ნაწილის მაგალითი წარმოდგენილია ქვემოთ:

რა არის მნიშვნელოვანი ჩვენი პრობლემის მოსაგვარებლად:

  • ტიპი - წერილის ძირითადი ტიპი, იმისდა მიხედვით, თუ რა მოდის ჩვენთან ფოსტით, ის შეიძლება განსხვავდებოდეს 0-დან 7-მდე (თითოეული რიცხვი მიუთითებს შინაარსის საკუთარ ტიპზე, რომელიც მდებარეობს წერილის სხეულში);
  • კოდირება – სხეულის გადაცემის კოდირება, მერყეობს 0-დან 5-მდე (0 - 7BIT, 1 - 8BIT, 2 - BINARY, 3 - BASE64, 4 - QUOTED-PRINTABLE, 5 - OTHER);
  • ნაწილები - ასო ნაწილების მასივი, რომელიც შეესაბამება ობიექტის სტრუქტურას უფრო მაღალ დონეზე.

მოდით უფრო ახლოს მივხედოთ ნაწილების თვისებებს. პირველი, რაც უნდა ითქვას, არის ის, რომ ამ მასივის ნულოვან უჯრედში არის ინფორმაცია, რომელიც ზუსტად შეესაბამება წერილის ტექსტს და დაწყებული პირველიდან - თანდართულ ფაილებამდე. ასევე, თითოეულ ობიექტში მითითებულია ტიპი და პარამეტრებში კოდირება მითითებულია აშკარად და იმპლიციტურად.

ასოს სტრუქტურა შეიძლება იყოს წყობილი, როგორც გინდა, ყოველ შემთხვევაში მქონია შემთხვევები, როცა ოთხ-ხუთ დონეს მიაღწია, ამიტომ, როგორც ამბობენ, მომავალში რეკურსიული ფუნქციის დაწერა დაგვჭირდება.

მეორე ფუნქცია imap_fetchbody() იღებს შეტყობინების კონკრეტულ ნაწილს, ყველაზე ხშირად კოდირებული სახით.

ახლა დავამატოთ ცვლადი, რომელშიც შევინახავთ ასოს სხეულის დამუშავებულ ვერსიას:

$body = "";

მოდით დავუბრუნდეთ functions.php ფაილს და დავწეროთ რეკურსიული ფუნქცია:

ფუნქცია recursive_search($structure)($encoding = ""; if($structure->subtype == "HTML" || $structure->type == 0)( if($structure->parameters->attribute == " charset")( $charset = $structure->პარამეტრები->მნიშვნელობა; ) 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() ფუნქცია იღებს ერთ პარამეტრს - ასოს სტრუქტურას, სადაც თანმიმდევრულად ამოწმებს თვისებებს და იღებს სამ პარამეტრს: კოდირება, სიმბოლოების ნაკრები, ქვეტიპი. რეკურსიიდან გასასვლელი წერტილი არის ნაწილების თვისების არარსებობა ნულოვანი უჯრედით. აქ მეტი არაფერია ასახსნელი, ვფიქრობ, კოდიდან ნათელია, რა და როგორ ხდება.

მოდით დავამატოთ კიდევ ერთი ფუნქცია ასოს სხეულის გადასაყვანად, რომელიც მოგვიანებით დაგვჭირდება:

ფუნქცია 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 = შესვენება 1: $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); ["დაშიფვრა"] == 2)( $body = structure_encoding ($recursive_data["encoding"], $msg_body); ) if(!check_utf8($recursive_data["charset"]))($body = convert_to_utf8($ recursive_data ["charset"], $msg_body )

მას შემდეგ რაც მივიღებთ რეკურსიის მონაცემებს, თანდათან ვამოწმებთ გადაცემის დაშიფვრას და ამის მიხედვით გამოვიძახებთ სტრუქტურა_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->ნაწილები); $j++, $f++)(if(in_array($msg_structure->ნაწილები[$j]->ქვეტიპი, $mail_filetypes))($mails_data[$i]["attachs"][$j]["type"] = $msg_structure->ნაწილები[$j]->ქვეტიპი $mails_data[$i]["attachs"][$j]["size"] = $msg_structure->ნაწილები[$j]->$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_put_contents() ფუნქციის გამოყენებით, ჩვენ ვინახავთ ჩვენს ფაილს სერვერზე tmp საქაღალდეში.

შედეგის ნახვა მინდა!

მუშაობის პროცესში ჩამოვაყალიბეთ მასივი $mails_data მონაცემებით და ვიზუალიზაციისთვის უკვე პირდაპირ ვიმუშავებთ. ამ სტატიაში მე გამოვიყენე სატესტო წერილი, რომელიც ჩემს ფოსტაში იყო, ვნახოთ რა მივიღეთ ბოლოს:


დაახლოებით ასე უნდა გამოიყურებოდეს თქვენი მასივი, სამწუხაროდ, პირადი მიზეზების გამო მომიწია ფაილის შინაარსის დამალვა. ახლა მოდით გადავიდეთ ჩვენს HTML მარკირებაზე:

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

Yandex Mail (Inbox) |

ასოების რაოდენობა:

ასოების გარეშე
$mail):?>
დროის ანაბეჭდი:
Თარიღი:
Ვის:
მდებარეობა:
თემა:
წერილი base64-ში:
Მიმაგრებული ფაილები:
$attach):?>
ტიპი:
ზომა (ბაიტებში):
სახელი:
სხეული:


მე არ დავამატებ სტილებს აქ, რადგან ისინი არ თამაშობენ განსაკუთრებულ როლს, საბოლოოდ:


და სერვერზე tmp საქაღალდეში გექნებათ ფაილი.

დასკვნა

სტატიიდან ყველა ნაბიჯის დასრულების შემდეგ, თქვენ მიაღწევთ სასურველ შედეგს, მაგრამ ყველაფერი არც ისე მარტივია, როგორც ერთი შეხედვით ჩანს - არის ხარვეზები, რომლებიც უნდა იქნას გათვალისწინებული. კონკრეტული ამოცანისთვის სკრიპტის დაწერისას, თქვენ უნდა აკონტროლოთ კოდირება ყველა ეტაპზე, ასოები შეიძლება მოვიდეს სხვადასხვა ელ.ფოსტის ანგარიშებიდან, რომელთაგან თითოეულს შეიძლება ჰქონდეს საკუთარი ნიუანსი. ასევე მნიშვნელოვანია გავითვალისწინოთ, რომ Yandex ფოსტა და მათი დოკუმენტაცია პერიოდულად განახლდება, ამიტომ შეიძლება გამოჩნდეს ფოსტის პროგრამებთან მუშაობის სხვადასხვა ქვეპუნქტი. ეს ყველაფერი ჩემთვისაა, იმედი მაქვს, რომ ეს სტატია გამოგადგებათ Yandex-ის ფოსტის ქვედა დონის ვერსიასთან მუშაობისას.

ელფოსტის მიღება დანართით ვერ ხერხდება(
თუ ფოსტა იგზავნება ფაილით - ნებისმიერი ფაილით - მაშინ წერილის ტექსტი ქრება

დამეხმარე, გთხოვ

გასაგებია... თუ ფოსტას Yandex-დან Yandex-ში გადარიცხავთ, მაშინ ყველაფერი გამოდგება...
რაღაცნაირად გაარკვია
მაგრამ გაუგებარია რატომ არ იღებს ეს სკრიპტი Word-ის გარდა სხვა ფაილებს... გვერდით არის ხაზი MSWORD გამოყოფილი მძიმით და დადეთ pdf და zhpg და png - მხოლოდ Word კითხულობს და ინახავს ნორმალურად.... რაღაც მსგავსი



გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: