PHP ფოსტის განაწილება. ელფოსტის გაგზავნა PHP-ში

ელ.ფოსტის გაგზავნა PHP ზოგადი ფუნქციების გამოყენებით

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

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

Mail() ფუნქციის სინტაქსი:

Bool mail(string $to, string $subject, string $msg [, string $header]);

უფრო გასაგებად, თუ რა არის სათაურები და სად მდებარეობს ისინი წერილში, გახსენით თქვენი ელ.ფოსტის კლიენტი და შეხედეთ ნებისმიერ წერილს, როგორც კი ის ჩამოვიდა ( Outlook-ისთვის ეს შეიძლება გაკეთდეს მაუსის მარჯვენა ღილაკით დაწკაპუნებით ->Properties->Details->Original message).

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

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

აქ არის რამდენიმე ყველაზე ხშირად გამოყენებული:

  • From: "გამომგზავნის მომხმარებლის სახელი"
  • მიმართ:
  • თემა: წერილის საგანი
კოდირების პრობლემის გადაჭრა

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

ასოს კოდირება განისაზღვრება სათაურით Შინაარსის ტიპი:

$header="From: \"Evgen\" "; $header.="Content-type: text/plain; charset=\"windows-1251\""; $subject="ელფოსტის სათაური"; $msg="Storaka 1\nხაზი 2\nხაზი 3"; ფოსტა ("

სათაურში ჩვენ მივუთითეთ, რომ ასოს ტიპი იქნება უბრალო ტექსტი, ხოლო კოდირება იქნება Windows.

ახლა ჩვენი წერილი მოვა ელ.ფოსტის კლიენტისთვის გასაგები კოდირებით.

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

$subject="ელფოსტის სათაური"; $header="Content-type: text/plain; charset=\"windows-1251\""; $header.="From: Evgen"; $header.="თემა: $subject"; $header.="Content-type: text/plain; charset=\"windows-1251\""; $msg="Storaka 1\nხაზი 2\nხაზი 3"; mail(" ", $subject, $msg, $header);

ახლა ნებისმიერი ელექტრონული ფოსტის პროგრამა წაიკითხავს ამ წერილს!

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

ვირტუალური ჰოსტინგის სერვერებზე, საიტიდან ფოსტის გაგზავნა დასაშვებია მხოლოდ PHP mail() ფუნქციის გამოყენებით.

ელფოსტა, საიდანაც ელ.წერილი გაიგზავნება საიტიდან, რეგისტრირებულია ISPmanager ჰოსტინგის მართვის პანელში.

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

საფოსტო ყუთების მითითება, როგორიცაა: @gmail.com, @yandex.ru და ა.შ. გამოიწვევს ელ.წერილს სპამში დასრულებამდე!

კონფიგურაციისთვის, თქვენ უნდა გადახვიდეთ ISP მენეჯერზე >> განყოფილებაში "მსოფლიო ქსელი" >> "WWW დომენები"

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

სერვერზე php mail()-ის მუშაობის შესამოწმებლად, თქვენ უნდა შექმნათ ფაილი testmail.php შემდეგი შინაარსით საიტის ძირეულ საქაღალდეში:

სად [ელფოსტა დაცულია]ელფოსტა, რომელზეც უნდა გაიგზავნოს შეტყობინება.

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

http://domian.com/testmail.php

სადაც domain.com არის საიტის სახელი, რომლის ძირში შეიქმნა testmail.php სკრიპტი.

თუ შეტყობინება "php mail-ის ტესტირება" მივიდა მითითებულ ელფოსტაზე, მაშინ php ფოსტის ფუნქცია სწორად მუშაობს.

მაგალითი აღებულია PHP ფოსტის ოფიციალური დოკუმენტაციიდან http://php.net/manual/ru/function.mail.php

ფოსტის გაგზავნა CMS Drupal 7-დან.

ნაგულისხმევად, Drupal7-დან ყველა შეტყობინება იგზავნება php mail()-ის გამოყენებით, გამომგზავნის ელფოსტა მითითებულია Drupal7-ის ინსტალაციისას.

აუცილებელია, რომ დრუპალში გამგზავნის ელ. ფოსტა ემთხვეოდეს "ადმინისტრატორის ელფოსტას" ISPmanager ჰოსტინგის მართვის პანელში.

სამომავლოდ გამომგზავნის ელ. ფოსტის შეცვლა შესაძლებელია Drupal-ის ადმინისტრაციულ ნაწილში, განყოფილებაში: ადმინისტრაცია » კონფიგურაცია » სისტემა

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

გამორთეთ SMTP მოდული მოდულის გვერდით მდებარე ველის მოხსნით და „კონფიგურაციის შენახვის“ პარამეტრის შენახვით.

შესაძლებელია SMTP-ით შეტყობინებების გაგზავნა სხვა გზით განხორციელდეს. SMTP-ით შეტყობინებების გასაგზავნად, საიტზე უნდა იყოს წარმოდგენილი PHPMailer. PHPMailer ფაილები ნაგულისხმევად მდებარეობს დირექტორიაში ./sites/all/modules/smtp/phpmailer.

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

დრუპალის საიტებიდან ყველა შეტყობინება იგზავნება Druapl-ის შიდა ფუნქციის drupal_mail() გამოყენებით. გაგზავნის მოდულების უმეტესობა დანერგილია ამ ფუნქციის მეშვეობით. პარამეტრები არის ფაილში ./includes/mail.inc

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

drupal_mail ($module, $key, $to, $language, $params = მასივი(), $from = NULL, $send = TRUE)

ფოსტის გაგზავნა CMS Joomla 3-დან

ნაგულისხმევად, ყველა შეტყობინება Joomla-დან იგზავნება php mail() გამოყენებით, გამომგზავნის ელფოსტა მითითებულია Joomla-ს ინსტალაციისას.

აუცილებელია, რომ Joomla-ში გამგზავნის ელ.წერილი ემთხვეოდეს "ადმინისტრატორის ელფოსტას" ISPmanager-ის ჰოსტინგის მართვის პანელში.

სამომავლოდ, გამგზავნის ელფოსტა შეიძლება შეიცვალოს Jommla-ს ადმინისტრაციულ ნაწილში განყოფილებაში: სისტემა » გლობალური კონფიგურაცია » სერვერის პარამეტრები » ფოსტის პარამეტრები

"Mailler" ველში თქვენ უნდა აირჩიოთ "PHP Mail" ან "Sendmail", ასევე "SMTP Authentication" ველში აირჩიეთ "არა".

Joomla-ში ფოსტის გაგზავნის პარამეტრები შეიძლება მიუთითოთ კონფიგურაციის ფაილში configuration.php, რომელიც მდებარეობს საიტის root დირექტორიაში.

Configuration.php შეიცავს შემდეგ ხაზებს:

public $mailer = "ფოსტა";

public $mailfrom = "admin yourdomain.com";

public $fromname = "J25 Demo";

public $sendmail = "/usr/sbin/sendmail";

public $smtpauth = "0";

public $smtpuser = "";

public $smtppass = "";

public $smtphost = "localhost";

public $smtpsecure = "არცერთი";

public $smtpport = "25";

$mailer: "mail" იყენებს PHP ფოსტის ფუნქციას; "sendmail" იყენებს SMTP ფოსტას სერვერზე.

$mailfrom: მისამართიდან. ელფოსტის მისამართი, რომელსაც Joomla იყენებს საიტიდან ფოსტის გასაგზავნად.

$sendmail: გზა, სადაც Sendmail პროგრამა მდებარეობს. გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtpauth: თუ SMTP სერვერი მოითხოვს ავთენტიფიკაციას ფოსტის გასაგზავნად, დააყენეთ „1“-ზე. წინააღმდეგ შემთხვევაში "0". გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtpuser: მომხმარებლის სახელი SMTP სერვერზე წვდომისთვის. გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtppass: პაროლი SMTP სერვერზე წვდომისთვის. გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtphost: SMTP ჰოსტი. SMTP სერვერის მისამართი ფოსტის გაგზავნისას. გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtpsecure: აირჩიეთ უსაფრთხოების მოდელი, რომელსაც იყენებს თქვენი SMTP სერვერი: SSL ან TLS. ნაგულისხმევად გამორთულია. გამოიყენება, თუ $mailer დაინსტალირებულია Sendmail-ში.

$smtpport: SMTP პორტი. ყველაზე ნაკლებად უსაფრთხო სერვერები იყენებენ პორტს 25.

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

ფოსტის გაგზავნა CMS WordPress 4-ით

ნაგულისხმევად, WordPress-ის ყველა შეტყობინება იგზავნება php mail() გამოყენებით, გამომგზავნის ელფოსტა მითითებულია WordPress-ის ინსტალაციისას.

აუცილებელია, რომ გამომგზავნის ელფოსტა WordPress-ში ემთხვეოდეს „ადმინისტრატორის ელფოსტას“ ISPmanager ჰოსტინგის მართვის პანელში.

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

თუ შეტყობინებები არ იგზავნება საიტიდან, უნდა შეამოწმოთ არის თუ არა SMTP-ით წერილების გაგზავნის დანამატი და თუ ასეა, გამორთეთ იგი.

გადადით განყოფილებაში: Plugins » დაინსტალირებული Plufins

თუ არსებობს SMTP-ით გაგზავნის მოდული, მაშინ ის უნდა იყოს გამორთული.

ზოგჯერ შეიძლება მოხდეს შეცდომა:

„მესიჯის გაგზავნა ვერ მოხერხდა. შესაძლო მიზეზი: სერვერს არ აქვს mail() ფუნქციის მხარდაჭერა..."

ამის გადასაჭრელად თქვენ უნდა შეცვალოთ ფაილი საიტზე:

./wp-includes/pluggable.php

იპოვეთ ხაზები ამ ფაილში:

// დააყენეთ PHP-ის ფოსტის გამოყენება ()

$phpmailer->IsMail();

და შეცვალეთ:

// დააყენეთ PHP-ის ფოსტის გამოყენება ()

$phpmailer->IsSendmail();

WordPress-ის სხვადასხვა მოდულს შეუძლია გამოიყენოს როგორც php mail() ასევე SMTP ელ.ფოსტის გასაგზავნად, გლობალური პარამეტრების მიუხედავად. ამასთან დაკავშირებით, შესაძლებელია სიტუაცია, როდესაც php ფოსტით გაგზავნა გლობალურად არის კონფიგურირებული და მოდულში, რომელიც, მაგალითად, პასუხისმგებელია „გამოხმაურებაზე“, SMTP-ის საშუალებით.

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


ძალიან ხშირად საიტებზე არის საჭირო წერილის გაგზავნა ადმინისტრატორთან ან კლიენტთან. ეს შეიძლება გაკეთდეს ორი გზით: კლიენტის მხარეს და სერვერის მხარეს.


კლიენტის მხრიდან ფოსტის გასაგზავნად, უბრალოდ დაამატეთ ბმული "mailto:" გვერდის HTML კოდზე, რომელიც მიუთითებს საჭირო მისამართს:


მიწერეთ ვებმასტერს

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

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

Bool mail (სტრიქონი, სტრიქონის თემა, სტრიქონი შეტყობინება [, სტრიქონი დამატებითი_სათაურები [, სიმებიანი დამატებითი_პარამეტრები]])

ფოსტის გაგზავნისას უნდა მიუთითოთ მინიმუმ სამი პარამეტრი: მიმღები, სათაური და შეტყობინების ტექსტი.

როგორც მიმღების "to" მისამართი, შეგიძლიათ მიუთითოთ ერთი მისამართი ან მთელი სია, გამოყოფილი მძიმეებით. ინდივიდუალური მისამართი შეიძლება მითითებული იყოს შემდეგი "მისამართის" ან "სახელის" ფორმატებში:

[ელფოსტა დაცულია]ან საიტის ვებმასტერი

შეტყობინების თემა „subject“ არის ჩვეულებრივი სტრიქონი. ერთადერთი შეზღუდვა არის ის, რომ ხაზი არ უნდა შეიცავდეს ხაზის მიწოდებას ან კარის დაბრუნების სიმბოლოებს ("\n" და "\r").

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

საჭირო ელემენტების გარდა, შეგიძლიათ მიუთითოთ ორი დამატებითი - გაფართოებული სათაურები და გაფართოებული პარამეტრები. გაფართოებული სათაურები გამოიყენება შეტყობინებისთვის დამატებითი ატრიბუტებისა და ბლოკების დასამატებლად, როგორიცაა გამგზავნის მისამართი, ასლის მისამართის გაგზავნა ("cc"), ბრმა ასლის მისამართის გაგზავნა ("bcc") და ა.შ. გაფართოებული სათაურები ასევე საშუალებას გაძლევთ გაგზავნოთ შეტყობინებები HTML ფორმატში.

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

ასე რომ, შეტყობინების გაგზავნის მინიმალური სკრიპტი ასე გამოიყურება:

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

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

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

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

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

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

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

// php.ini-ში SMTP = localhost sptp_port = 25 // კოდი ini_set("SMTP", "localhost"); ini_set ("smtp_port", "25");

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

// არ დაგავიწყდეთ მათზე კომენტარის გაკეთება // სკრიპტის საიტზე გამოქვეყნებამდე. ini_set ("SMTP", "localhost"); ini_set ("smtp_port", "15025");

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

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

პირველ რიგში, მოდით ვისაუბროთ ცოტა თეორიაზე. მოსაწყენია, მაგრამ დამიჯერეთ, მნიშვნელოვანია. ელ.ფოსტის გასაგზავნად საჭიროა SMTP სერვერი. ფასიანი ჰოსტინგის სერვისების უმეტესობას ეს უნდა ჰქონდეს. თუმცა, თუ ეს შეუძლებელია (მაგალითად, ჰოსტინგი უფასოა ან ძალიან იაფია), მაშინ შეგიძლიათ გამოიყენოთ მესამე მხარის SMTP სერვერი (მაგალითად, mail.ru). ანუ მთავარია: გაგზავნისთვის საჭიროა SMTP სერვერი.

მეორეც, ელექტრონული ფოსტის მისაღებად გჭირდებათ POP სერვერი. რატომ ვამბობ ამ ყველაფერს? და იმ ფაქტს, რომ ძალიან ხშირად ადამიანები ფორუმებზე ეკითხებიან: "რატომ არ მუშაობს PHP-ში ელექტრონული ფოსტის გაგზავნა ჩემთვის?" და ამავდროულად, ადამიანები ცდილობენ გაგზავნონ წერილები სერვერიდან, რომელსაც საერთოდ არ აქვს SMTP. ძალიან მნიშვნელოვანია: PHP არ აგზავნის ელ.წერილს! sendmail აპლიკაცია აგზავნის ელ.წერილს, რომელიც ხელმისაწვდომია Unix ოპერაციულ სისტემებზე, რომლებზეც დაინსტალირებულია სერვერების უმეტესობა. და PHP უბრალოდ გადასცემს ბრძანებებს ამ აპლიკაციაში. იმედია გარკვევით ავხსენი. ასე რომ, პირველი რაც უნდა გააკეთოთ არის sendmail აპლიკაციის მიღება. მაგრამ მოხარული ვიქნები მათ, ვინც იყენებს Denwer-ის პაკეტს, რადგან მათ უკვე აქვთ ეს აპლიკაცია ჩაშენებული. მართალია, ერთი თავისებურებით. წერილების ფაქტობრივი გაგზავნა არ ხდება - ისინი ყველა ინახება "tmp/!sendmail" დირექტორიაში. მაგრამ თუ წერილი, რომელიც თქვენ გაუგზავნეთ PHP-ს, იქ იყო, მაშინ შეგიძლიათ დარწმუნებული იყოთ, რომ დროის 99% -ში ყველაფერი იმუშავებს რეალურ ჰოსტინგზე. თუმცა, თუ ნამდვილად გსურთ ელექტრონული ფოსტის გაგზავნა, მაშინ შეგიძლიათ ჩამოტვირთოთ sendmail, დააკონფიგურიროთ იგი ზოგიერთ SMTP სერვერზე, მაგალითად, mail.ru, შემდეგ შეცვალოთ გაგზავნის გზა php.ini-ში (PHP პარამეტრები) და გააგრძელოთ ისიამოვნე ცხოვრებით.

ახლა გადავიდეთ PHP-ზე. ელექტრონული ფოსტის გასაგზავნად გამოიყენება მხოლოდ ერთი ფუნქცია - mail(). ეს ფუნქცია იღებს ოთხ პარამეტრს, რომელთაგან სამი საჭიროა:

როგორც ხედავთ, ყველაფერი ინტუიციურია: ვის გაუგზავნოთ, რა არის თემა და თავად მესიჯი. თუ იყენებთ Denwer-ის პაკეტს, მაშინ სკრიპტის გაშვების შემდეგ „tmp/!sendmail“ დირექტორიაში შეგიძლიათ იპოვოთ ფაილი, რომელიც შეიცავს თქვენი წერილის მონაცემებს. თქვენ შეგიძლიათ გახსნათ ეს ფაილები ნოუთაპში, მაგრამ უმჯობესია გახსნათ ისინი ელ.ფოსტის რომელიმე პროგრამაში (მაგალითად, The Bat ან Microsoft Outlook).

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

ახლა ნება მომეცით გავშიფროთ რა წერია აქ. სათაურების ცვლადში ვაყენებთ შემდეგ პარამეტრებს: ველში „ვისგან მოვა“. [ელფოსტა დაცულია]"(ანუ, შეტყობინებების გაგზავნა შესაძლებელია არა თქვენი სახელით). შეტყობინება ასევე არის ჩვეულებრივი ტექსტი (ტექსტი/მარტივი) კირიული კოდირებით (windows-1251), ანუ ჩვენს მშობლიურ კოდირებაში, რომელიც მოიცავს რუსულ და ინგლისურს. და, სხვათა შორის, "\n" არის გადასვლა ახალ ხაზზე (ანალოგური
HTML-ში).

შეტყობინებები ასევე შეიძლება გაიგზავნოს HTML ფორმატში. ამისათვის უბრალოდ შეცვალეთ "text/plain"-ით "text/html". და თქვენ შეძლებთ გამოიყენოთ HTML ტეგები თქვენს შეტყობინებაში. უბრალოდ არ დაგავიწყდეთ, რომ ყველა სახის ტეგი, როგორიცაა: "", "" და სხვა, იფილტრება ნებისმიერი თავმოყვარე ფოსტის სისტემით. თუმცა, გამოიყენეთ დიზაინის ტეგები ("", " ", "
" და სხვები) შეგიძლიათ. და ბოლოს, მოდით გავაგზავნოთ ელფოსტა HTML ტეგების გამოყენებით:

Სულ ეს არის. როგორც ხედავთ, თემა ძალიან მარტივია და ძალიან მნიშვნელოვანია იცოდეთ როგორ გაგზავნოთ ელ.წერილი PHP-ში.

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

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

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

შექმენით მონაცემთა წარდგენის ფორმა html-ში

პირველი ხაზი იქნება შემდეგი

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

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

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

შემდეგი ხაზი:

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

შემდეგი ხაზი იქნება "გაგზავნა" ღილაკი:

და ბოლო ხაზი ფორმაში იქნება ტეგი

ახლა ყველაფერი ერთად გავაერთიანოთ.





ახლა მოდით გავხადოთ ველები ფორმაში სავალდებულო. ჩვენ გვაქვს შემდეგი კოდი:





შექმენით ფაილი, რომელიც მიიღებს მონაცემებს HTML ფორმიდან

ეს იქნება ფაილი სახელწოდებით send.php

ფაილში, პირველ ეტაპზე, თქვენ უნდა მიიღოთ მონაცემები პოსტის მასივიდან. ამისათვის ჩვენ ვქმნით ორ ცვლადს:

$fio = $_POST["fio"];
$email = $_POST["email"];

PHP-ში ცვლადების სახელებს წინ უძღვის $-ის ნიშანი და ყოველი სტრიქონის ბოლოს იდება მძიმით. $_POST არის მასივი, რომელშიც იგზავნება მონაცემები ფორმიდან. html ფორმაში გაგზავნის მეთოდი მითითებულია, როგორც მეთოდი = "პოსტი". ასე რომ, ორი ცვლადი მიიღება html ფორმიდან. თქვენი საიტის დასაცავად, თქვენ უნდა გაიაროთ ეს ცვლადები რამდენიმე ფილტრის მეშვეობით - php ფუნქციები.

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

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

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

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

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