Php ფოსტის გაგზავნა Yandex smtp-ით. ფოსტის გაგზავნა SMTP-ით ლოკალური სერვერიდან

მთავარი / პროგრამების ინსტალაცია

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

შეგიძლიათ ჩამოტვირთოთ PHPMailer ბიბლიოთეკა https://github.com/PHPMailer/PHPMailer-დან (ღილაკი „კლონი ან ჩამოტვირთვა“).

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

ელ.ფოსტის გაგზავნა ფოსტით() ფუნქციით PHPMailer-ის გამოყენებით

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

// PHPMailer ბიბლიოთეკის ჩართვა გამოიყენეთ PHPMailer\PHPMailer\PHPMailer; მოითხოვს "PHPMailer/PHPMailer.php"; // ასოს შექმნა $mail = new PHPMailer(); $mail->setFrom(" [ელფოსტა დაცულია]", "ივან ივანოვი"); // ვისგან (ელფოსტა და სახელი) $mail->addAddress(" [ელფოსტა დაცულია]", "ვასია პეტროვი"); // ვის (ელ. ფოსტა და სახელი) $mail->Subject = "ტესტი"; // წერილის თემა // html ტექსტიასოები $mail->msgHTML("

გამარჯობა!

ეს არის სატესტო წერილი.

"); // Send if ($mail->send()) (echo "Message გაგზავნილია!";) else (echo "Error:" . $mail->ErrorInfo; )

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

ელ.ფოსტის გაგზავნა SMTP-ით PHPMailer-ის გამოყენებით Yandex-ისა და Google-ის მაგალითის გამოყენებით

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

// PHPMailer ბიბლიოთეკის ჩართვა გამოიყენეთ PHPMailer\PHPMailer\PHPMailer; გამოიყენეთ PHPMailer\PHPMailer\SMTP; მოითხოვს "PHPMailer/PHPMailer.php"; მოითხოვს "PHPMailer/SMTP.php"; // ასოს შექმნა $mail = new PHPMailer(); $mail->isSMTP(); // გაგზავნა SMTP-ით $mail->Host = "smtp.yandex.ru"; // SMTP სერვერის მისამართი $mail->SMTPAuth = true; // SMTP ავთენტიფიკაციის ჩართვა $mail->Username = "login"; // თქვენი მომხმარებლის სახელი (დომენისა და @-ის გარეშე) $mail->Password = "პაროლი"; // თქვენი პაროლი $mail->SMTPSecure = "ssl"; // ssl დაშიფვრა $mail->Port = 465; // კავშირის პორტი $mail->setFrom(" [ელფოსტა დაცულია]", "ივან ივანოვი"); // ვისგანაც $mail->addAddress(" [ელფოსტა დაცულია]", "ვასია პეტროვი"); // ვისაც $mail->Subject = "ტესტი"; $mail->msgHTML("

გამარჯობა!

ეს არის სატესტო წერილი.

"); // Send if ($mail->send()) (echo "Message გაგზავნილია!";) else (echo "Error:" . $mail->ErrorInfo; )

ელფოსტის გაგზავნა Google-ის საშუალებითაქვს ერთი გაფრთხილება: თქვენ გჭირდებათ გუგლის ანგარიში არასანდო აპლიკაციებზე წვდომის დაშვება. ამისათვის თქვენ უნდა შეხვიდეთ თქვენს ანგარიშზე https://myaccount.google.com, გადახვიდეთ უსაფრთხოებაზე, გადახვიდეთ განყოფილებაში „არასანდო აპლიკაციები, რომლებსაც აქვთ წვდომა თქვენს ანგარიშზე“ და იქ გადახვიდეთ „დაშვებულზე“. წერის დროს ეს გვერდი არის https://myaccount.google.com/u/0/lesssecureapps.

$mail->Host = "smtp.gmail.com"; // SMTP სერვერის მისამართი $mail->SMTPAuth = true; // SMTP ავთენტიფიკაციის ჩართვა $mail->Username = "login"; // თქვენი მომხმარებლის სახელი $mail->Password = "პაროლი"; // თქვენი პაროლი $mail->SMTPSecure = "ssl"; // ssl დაშიფვრა $mail->Port = 465; // კავშირის პორტი

თუ პირველად აწარმოებთ პროგრამას smtp-ით გაგზავნისთვის, მიზანშეწონილია დამატებით გამოიყენოთ გაგზავნამდე $mail->SMTPDebug = 1;მიიღოს ყველა შეტყობინება კლიენტიდან და smtp სერვერიდან, ე.ი. ეკრანზე გამოჩნდება კავშირის მთელი პროცესი, ავტორიზაცია და ა.შ., რაც ძალიან სასარგებლოა თქვენი პროგრამის გამართვისთვის.

ელ.ფოსტის გაგზავნა დანართით PHPMailer-ის გამოყენებით

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

// PHPMailer ბიბლიოთეკის ჩართვა გამოიყენეთ PHPMailer\PHPMailer\PHPMailer; გამოიყენეთ PHPMailer\PHPMailer\Exception; მოითხოვს "PHPMailer/PHPMailer.php"; მოითხოვს "PHPMailer/Exception.php"; // წერილის შექმნა $mail = ახალი PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [ელფოსტა დაცულია]", "ივან ივანოვი"); // ვისგანაც $mail->addReplyTo(" [ელფოსტა დაცულია]", "ივან ივანოვი"); // დაბრუნების მისამართი $mail->addAddress(" [ელფოსტა დაცულია]", "ვასია პეტროვი"); // ვისაც $mail->Subject = "ტესტი"; // სათაური $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // მიიღეთ "სხეული" წერილის ფაილი $mail->AltBody = "Plain text letter" // plain text letter თუ კლიენტი არ უჭერს მხარს html $mail->addAttachment("my_file.txt" // მიმაგრება ერთი ფაილი $mail-); >addAttachment("phpmailer) .jpg" // მიმაგრება მეორე ფაილი // Send if ($mail->send()) (echo "Message გაგზავნილია!";) else (echo "Error: " . $mail-); >ErrorInfo;

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

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

// PHPMailer ბიბლიოთეკის ჩართვა გამოიყენეთ PHPMailer\PHPMailer\PHPMailer; მოითხოვს "PHPMailer/PHPMailer.php"; //წერილის შექმნა $mail = ახალი PHPMailer; $mail->IsHTML(true); $mail->setFrom(" [ელფოსტა დაცულია]", "ივან ივანოვი"); $mail->addAddress(" [ელფოსტა დაცულია]", "ვასია პეტროვი"); $mail->Subject = "ტესტი"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "

სურათი html კოდით

"; // გაგზავნეთ $mail->send();

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

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

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

$mail->SMTPSecure = false; $mail->SMTPAutoTLS = false;

რომ ხელი მოაწერეთ წერილს DKIM ხელმოწერით, თქვენ უნდა შეასრულოთ რამდენიმე ნაბიჯი:

  • შექმენით პირადი და საჯარო გასაღებები თქვენი დომენისთვის
  • დაამატეთ DNS ჩანაწერი TXT დომენისთვის საჯარო გასაღებით
  • დააკონფიგურირეთ DKIM ხელმოწერა PHPMailer-ში ელფოსტის გაგზავნამდე

ახლა მე აღვწერ თითოეულ ნაბიჯს ცოტა უფრო დეტალურად.

პირადი და საჯარო გასაღებების გენერირება

თუ თქვენ გაქვთ Linux ჰოსტინგი და გაქვთ წვდომა Shell-ზე, მაშინ საკვანძო ფაილების გენერირება ისეთივე მარტივია, როგორც მსხლის დაბომბვა, საჭიროა მხოლოდ 2 ბრძანების გაშვება თქვენი ჩვეულებრივი მომხმარებლის უფლებებით:

Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout

შესაბამისად, ტესტი-პირადი.pemდა test-public.pem- ეს არის პირადი და საჯარო გასაღებები. თქვენ უნდა შეინახოთ ისინი საქაღალდეში, რომელიც მიუწვდომელია საიტის ვიზიტორებისთვის ან თქვენს გარდა ვინმესთვის.

თუ შეუძლებელია შელში ბრძანებების შესრულება, შემდეგ პირადი და საჯარო გასაღებების გენერირებისთვის და ფაილებში შესანახად, შეგიძლიათ გამოიყენოთ შემდეგი კოდი:

$domain = "test.ru"; // თქვენი დომენი $privatekeyfile = "test-private.pem"; // ფაილის სახელი, რომელშიც პირადი გასაღები დაიწერება $publickeyfile = "test-public.pem"; // ფაილის სახელი, რომელშიც დაიწერება საჯარო გასაღები, თუ (file_exists($privatekeyfile)) (echo "

არსებული გასაღებების გამოყენება

"; $privatekey = file_get_contents ($privatekeyfile); $publickey = file_get_contents ($publickeyfile); ) else (echo "

შექმენით გასაღებები"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); $ pk $publickey = $pubKey["გასაღები"];

პირადი გასაღები (შეინარჩუნეთ ეს პირადი!):

" . $privatekey ."
"; ექო"

საჯარო გასაღები:

" . $publickey ."
";

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

DNS ჩანაწერის დამატება საჯარო გასაღებით

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

თქვენ უნდა დაამატოთ DNS ჩანაწერი შემდეგნაირად:

შესვლის სახელი: mail._domainkey.test.ru. (ბოლოში არის წერტილი ".")

TTL: 3600 (ან რომელი იქნება ნაგულისხმევი)

პოსტის ტიპი: TXT

მნიშვნელობა: v=DKIM1; h=sha256; t=s; p=YOUR_PUBLIC_KEY

შესვლის სახელში test.ruუნდა შეიცვალოს თქვენი დომენის სახელით. თქვენ ცვლით სიტყვებს „YOUR_PUBLIC_KEY“ ტექსტით, რომელიც მიიღეთ წინა ეტაპზე „საჯარო გასაღების“ შემდეგ, „-----BEGIN PUBLIC KEY-----“ და „-----END PUBLIC KEY-“-ის გარეშე. ---", მხოლოდ თავად გასაღები. ამ შემთხვევაში, საჭიროა ყველა საკვანძო ხაზი შეერთება ერთ გრძელ ხაზზეისე, რომ არ მოხდეს ხაზის წყვეტა.

DKIM ხელმოწერის დაყენება PHPMailer-ში და ელფოსტის გაგზავნა

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

// ბიბლიოთეკის ჩართვა გამოიყენეთ PHPMailer\PHPMailer\PHPMailer; მოითხოვს "PHPMailer/PHPMailer.php"; // წერილის შექმნა $mail = ახალი PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [ელფოსტა დაცულია]"); $mail->addAddress(" [ელფოსტა დაცულია]"); $mail->Subject = "ეს არის ტესტი"; $mail->msgHTML("

ეს გამოცდაა

"); // DKIM ხელმოწერის დაყენება $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // გაგზავნეთ $ ფოსტა- >გაგზავნა();

რა თქმა უნდა test.ruთქვენ უნდა შეცვალოთ თქვენი დომენის სახელი და ტესტი-პირადი.pemპირადი გასაღების ფაილის სრულ გზას და სახელს, რომელიც შეიქმნა გასაღების გენერირების ეტაპზე.

ახლა, PHPMailer-ით გაგზავნილი თქვენი ელ.წერილი DKIM იქნება ხელმოწერილი თქვენი პირადი გასაღებით.

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

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

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

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

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

2019-08-05

გამარჯობა, ძვირფასო სტუმარო!

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

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

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

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

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

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

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

როგორ გამოგიგზავნით გამოხმაურების წერილებს

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

გამოხმაურების ფორმა შექმნილია იმისთვის, რომ მომხმარებელს საშუალება მისცეს დაუკავშირდეს საიტის ადმინისტრატორს მისი მესიჯის გადასაცემად. როგორც წესი, ეს ფორმა შედგება რამდენიმე ველისა და ღილაკისაგან „გაგზავნა“.

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

  • "Name" - შეტყობინების გამგზავნის სახელის შეყვანა;
  • „ელ.ფოსტა“ – მისამართისთვის ელგამგზავნი;
  • "შეტყობინებების თემა";
  • "შეტყობინებების ტექსტი".

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

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

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

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

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

უკუკავშირის ფორმის შექმნა

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

ქვემოთ მოცემულია ამ ფორმის HTML კოდი, რომელსაც განვათავსებთ "კონტაქტების" გვერდზე (ფაილი kontakty.php სტატიების დირექტორიაში).

    "სტატია" >

    კონტაქტები

    კავშირი

    "კონტაქტი"მოქმედება = "#" მეთოდი = "პოსტი" >

    უკუკავშირის ფორმა

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

    "საკონტაქტო ბლოკი" >

    "კონტაქტური შეყვანა" >

    "ტექსტი" id = "კონტაქტის სახელი"სახელი = "კონტაქტის სახელი"სათაური = "სახელი უნდა იყოს რუსულ ენაზე და შეიცავდეს მინიმუმ 3 სიმბოლოს" ნიმუში = "{3,}" საჭირო >

  1. "ცარიელი კონტაქტი" >

    "კონტაქტური შეყვანა" >

    "ელ.ფოსტა" id = "საკონტაქტო-ელ.ფოსტა"სახელი = "საკონტაქტო-ელ.ფოსტა"საჭირო >

  2. "კონტაქტი-საგანი" >

  3. "კონტაქტი-კომენტარი" >

  4. "კონტაქტის ღილაკი" >

    "გაგზავნა"სახელი = "კონტაქტის ღილაკი"ღირებულება = "გაგზავნა" >

ნახ.1 უკუკავშირის ფორმის HTML კოდი

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

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

PHPMailer ბიბლიოთეკის ინსტალაცია

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

მისი ინსტალაციისთვის საჭიროა ჩამოტვირთოთ საჭირო ფაილები. ეს შეიძლება გაკეთდეს GitHub ვებ სერვისიდან Composer-ის გამოყენებით (PHP პაკეტების დამოკიდებულების მენეჯერი). ან უბრალოდ ჩამოტვირთეთ საჭირო ფაილები ჩვეულებრივი გზით.

ეკრანის სურათი 73

ქვემოთ მოცემულია GitHub ვებ სერვისის გვერდი, სადაც მითითებულია PHPMailer ბიბლიოთეკის რეგულარული გადმოტვირთვის ბმული.

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

ნებისმიერ შემთხვევაში, მიღებული არქივის ფაილი უნდა გაიხსნას, რის შემდეგაც ამოღებული PHPMailer-master საქაღალდე მთელი თავისი შინაარსით უნდა განთავსდეს საიტის root-ში. ამავდროულად, სიმარტივისთვის, შეგიძლიათ გადარქმევა PHPMailer. ქვემოთ მოცემულია PHPMailer საქაღალდის შიგთავსი, რომელიც განთავსებულია საიტის root დირექტორიაში.

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

ჩვენ ვქმნით სკრიპტს SMTP-ით ფოსტის გასაგზავნად

სკრიპტის შედგენისთვის საკმარისია გამოიყენოთ GitHub გვერდზე მოცემული PHPMailer-ის გამოყენების რეკომენდაციები, რომლებსაც ადრე ვიყენებდით ბიბლიოთეკის ჩამოსატვირთად.

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

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

ეკრანის სურათი 74

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

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

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

    //----წერილის გაგზავნის სკრიპტი SMTP-ით PHPMailer-ის გამოყენებით----

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

    გამოყენება PHPMailer\PHPMailer\PHPMailer ;

    გამოყენება PHPMailer\PHPMailer\Exception ;

    თუ (!ცარიელი($_POST["კონტაქტის ღილაკი" ])) (

    $name = $_POST["კონტაქტის სახელი" ];

    $name = check_symbol ($name, "Name" , "1" , "/^+\z/iu" );

    $email = $_POST["contact-email" ];

    $email = check_symbol ($email, "e-mail" , "1" , "/^+@(+\.)+(2,6)\z/i");

    $subject = $_POST["contact-subject" ];

    $subject = check_symbol ($subject, "შეტყობინების თემა" , "1" , "0" );

    $comment = $_POST["კონტაქტი-კომენტარი" ];

    $comment = check_symbol ($comment, "შეტყობინებების ტექსტი", "1" , "0" );

    თუ (!ცარიელი($GLOBALS["გაფრთხილება" ])) (

    $alert = "ფორმის მონაცემები არ გაიგზავნა. ნაპოვნია შემდეგი შეცდომები:\n".$alert;

    მოიცავს"alert.php" ;

    სხვა {

    //ბიბლიოთეკის დაკავშირება

    მოითხოვს"PHPMailer/src/PHPMailer.php" ;

    მოითხოვს"PHPMailer/src/Exception.php" ;

    მოითხოვს"PHPMailer/src/SMTP.php" ;

    $mail = ახალი PHPMailer(); //კლასის ინიციალიზაცია

    $from = " [ელფოსტა დაცულია]" ; //ელ.ფოსტის მისამართი, საიდანაც იგზავნება წერილი

    $ to = " [ელფოსტა დაცულია]" ; //მიმღების მისამართი

    $mail -> isSMTP(); //SMTP პროტოკოლის გამოყენება

    $mail -> Host = "smtp.yandex.ru" ; //ფოსტის სერვერის მისამართი

    $mail -> SMTPAuth = მართალია ; //ავტორიზაციის რეჟიმის ჩართვა

    $mail -> მომხმარებლის სახელი = " [ელფოსტა დაცულია]" ; //შესვლა დომენის ელექტრონული ფოსტიდან, რომელიც დაკავშირებულია მესამე მხარის ელ.ფოსტის სერვისთან (ამ შემთხვევაში, Yandex.Mail)

    $mail -> პაროლი = "27MrDon89" ; //პაროლი დომენის ფოსტისთვის

    $mail -> SMTPSecure = "ssl" ; //დაშიფვრის პროტოკოლი

    $mail -> Port = "465" ; //SMTP სერვერის პორტი

    $mail -> CharSet = "UTF-8" ; //კოდირება

    $mail -> setFrom ($from, "ადმინისტრატორი" ); //მისამართი და გამგზავნის სახელი

    $mail -> addAddress ($to, "Administrator" ); //მიმღების მისამართი და სახელი

    $mail -> isHTML ( მართალია ); //ელფოსტის ფორმატის დაყენება HTML-ზე

    $mail -> თემა = "გამოხმაურების ფორმა გაგზავნილია"; //ელფოსტის სათაური (სათაური)

    $mail -> Body = "

    გამგზავნის სახელი: $name

    გამგზავნის მისამართი: $ელფოსტა

    შეტყობინების თემა: $subject

    შეტყობინების შინაარსი: $ კომენტარი

    " ; //შეტყობინებების შინაარსი

    $mail -> AltBody = "ალტერნატიული ასო ტექსტი"; //ალტერნატიული ელფოსტა, თუ ელფოსტის კლიენტს არ აქვს HTML ფორმატის მხარდაჭერა

    $mail -> SMTPDbug = 0 ; //SMTP გამართვის ჩართვა: 0 - გამორთულია (ჩვეულებრივი გამოყენებისთვის), 1 = კლიენტის შეტყობინებები, 2 - კლიენტისა და სერვერის შეტყობინებები

    თუ($mail -> გაგზავნა()) (

    $alert = "მესიჯი გაიგზავნა"; //ბრაუზერის დიალოგურ ფანჯარაში გამოიტანე შეტყობინება წერილის წარმატებით გაგზავნის შესახებ

    სხვა {

    $alert = "შეცდომა, ელფოსტა ვერ გაიგზავნება:".$mail -> ErrorInfo ; //შეცდომის გაგზავნა

    მოიცავს"alert.php" ;

ნახ.5 ელ.ფოსტის გაგზავნის სკრიპტი SMTP-ით ავტორიზაციით

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

1. იმის გამო, რომ წერილი იგზავნება მესამე მხარის ფოსტის სერვისიდან, აქ გამოიყენება კონკრეტული SMTP სერვერის შესაბამისი პარამეტრები. ამ შემთხვევაში, Yandex.Mail სერვერის გამოყენების შემთხვევაში გამოიყენება შემდეგი ქონების მნიშვნელობები:

  • საკუთრება მასპინძელი(pos.28) - ფოსტის სერვერის მისამართი მნიშვნელობით smtp.yandex.ru;
  • საკუთრება SMTPSecure
  • საკუთრება პორტი

თვისებების ეს მნიშვნელობები აღებულია Yandex.Help გვერდიდან, რომელიც ნაჩვენებია შემდეგ ეკრანის სურათზე.

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

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

და ამრიგად, Mail.ru, როგორც მესამე მხარის SMTP სერვერის გამოყენების შემთხვევაში, უნდა იქნას გამოყენებული PHPMailer კლასის თვისებების შემდეგი მნიშვნელობები:

  • საკუთრება მასპინძელი(pos.28) - ფოსტის სერვერის მისამართი (smtp.mail.ru);
  • საკუთრება SMTPSecure(pos.32) - დაშიფვრის პროტოკოლი (ssl);
  • საკუთრება პორტი(პოზ. 33) - SMTP სერვერის პორტი (465).

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

2. საკუთრებაში მომხმარებლის სახელი(პოზ. 30) აუცილებელია დომენის საფოსტო ყუთის სრული მისამართის მითითება. ამ შემთხვევაში, " [ელფოსტა დაცულია]".

თუმცა, თუ წერილების გასაგზავნად იყენებთ სხვა ანგარიშს დომენის ფოსტის ანგარიშის გარდა, მაგრამ მისამართს, რომელიც დაკავშირებულია უშუალოდ ფოსტის სერვისთან, მაგალითად " [ელფოსტა დაცულია]", მაშინ შესვლა უნდა იყოს მხოლოდ მისამართის ნაწილი "@" ნიშანმდე. ამ შემთხვევაში, შესვლას ექნება მნიშვნელობა "feedback".

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

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

იმისათვის, რომ დავინახოთ, როგორ გამოიყურება ეს პრაქტიკაში, მოდით დროებით შევიტანოთ გარკვეული შეცდომა პარამეტრებში. მაგალითად, დომენის ფოსტის პაროლი (საკუთრება პაროლი, პოზ.31). ასევე საკუთრებაში დროებით დაყენებული შეცდომის შესახებ დეტალური ინფორმაციის ჩვენება SMTPD შეცდომა(pos.50) მნიშვნელობა 1. მას შემდეგ, რაც ყველაფერი გამართულია და მოწმდება, ჩვენ გავუქმებთ SMTP გამართვის რეჟიმს, 1-ს ვცვლით 0-ით.

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

თუ რაიმე მიზეზით ფოსტის გაგზავნა ვერ მოხერხდა და, შესაბამისად, მეთოდმა ვერ დააბრუნა true, მაშინ ამ მდგომარეობას მოჰყვება შესაბამისი შეცდომის შეტყობინება (პოზ. 55).

ელფოსტის გაგზავნის შემოწმება

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

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

და აი, ფორმის წარდგენის შედეგი.

სადაც, ბრაუზერის დიალოგური ფანჯრის გზავნილიდან ირკვევა, რომ წერილის გაგზავნა შეუძლებელია SMTP კავშირის პრობლემის გამო.

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

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

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

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

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

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

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

ახლა, ფოსტის გაგზავნის წარმატებით შემოწმების შემდეგ, შეგიძლიათ გამორთოთ SMTP გამართვის რეჟიმი საკუთრების მინიჭებით SMTPD შეცდომა(pos.50) მნიშვნელობა 0.

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

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

საიტის წყარო ფაილები

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

  • www დირექტორია ფაილები
  • MySQL მონაცემთა ბაზის ცხრილები

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

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

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

აი თავად სკრიპტი:

"smtp.mail.ru", "SMTP_port" => "25", "SMTP_email" => " [ელფოსტა დაცულია]", "SMTP_pass" => "1111111", "SMTP_type" => "null"); // მიმღების ელფოსტა $Receiver = " [ელფოსტა დაცულია]"; // შეტყობინების თემა $Subject = "წერილის გაგზავნა PHP-დან"; // შეტყობინების ტექსტი (HTML-ში) $Text = "გამარჯობა!
სკრიპტიდან გაგზავნილი შეტყობინება მოუშონისაიტი: http://site"; // დანართი წერილში - ფაილის მისამართი $Attachment = ""; /* $mail = new KM_Mailer(სერვერი, პორტი, მომხმარებელი, პაროლი, ტიპი); */ /* ტიპი შეიძლება იყოს: null, tls ან ssl */ $mail = new KM_Mailer($SenderConfig["SMTP_server"], $SenderConfig["SMTP_port"], $SenderConfig["SMTP_email"], $SenderConfig["SMTP_pass"], $ SenderConfig[" SMTP_type"] if($mail->isLogin) ( // მიამაგრეთ ფაილი if($Attachment) ($mail->addAttachment($Attachment);) // დაამატეთ მეტი მიმღები $mail->addRecipient( " [ელფოსტა დაცულია]"); $mail->addRecipient(" [ელფოსტა დაცულია]"); /* $mail->send(From, For, Subject, Text, Subject = სურვილისამებრ) */ $SendMail = $mail->send($SenderConfig["SMTP_email"], $Receiver, $Subject, $Text // წაშალეთ მიმღებთა სია $mail->clearBCC(echo "მოხდა SMTP სერვერთან დაკავშირებისას");

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

SMTP_server - SMTP სერვერის მისამართი (ინდივიდუალური მისამართი სხვადასხვა ელფოსტისთვის)

Mail.ru ფოსტა: smtp.mail.ru პორტი: 25, 587 და 465 (SSL დაშიფვრით)

Yandex ფოსტა: smtp.yandex.ru პორტი: 25, 587 465 (SSL პორტი)

Rambler ფოსტა: mail.rambler.ru პორტი: 25, 587 465 (SSL პორტი)

Yahoo Mail: smtp.mail.yahoo.com SSL პორტი: 465

(თუ გჭირდებათ smtp სერვერების მისამართი, რომლებიც არ არის სიაში, დაწერეთ კომენტარებში)

SMTP_port - ჩვენ უკვე აღვწერეთ ის ზემოთ თითოეული smtp სერვერისთვის.

SMTP_email - მომხმარებელი უფრო ზუსტი იქნებოდა, მაგრამ სიცხადისთვის მე დავწერე ელ. ფოსტის მისამართი.

SMTP_pass - ელფოსტის პაროლი, რომელიც მითითებული იყო მნიშვნელობად SMTP_email გასაღებში


SMTP_type - ნაგულისხმევი NULL. ოქმი, რომლითაც გაიგზავნება წერილები. პროტოკოლები: SSL და TLS

თქვენ შეგიძლიათ დაამატოთ წერილს დანართები, უბრალოდ მიუთითეთ ფაილის სრული მისამართი $Attachment ცვლადში (/var/patch/to/file/File.pdf)

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

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

როგორ გავაგზავნოთ წერილები PHP-ის გამოყენებით?

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

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

// თუ თქვენ გჭირდებათ SMTP სესიის ჟურნალის ჩვენება, შეგიძლიათ გააუქმოთ შემდეგი ხაზი. // $_SERVER["debug"] = true;ფუნქცია MailSmtp ($reciever, $subject, $content, $headers, $debug = 0) ( $smtp_server = "smtp.site"; // SMTP სერვერის მისამართი$smtp_port = 25 ; // SMTP სერვერის პორტი$smtp_user = " [ელფოსტა დაცულია]" ; // SMTP სერვერზე ავტორიზაციის მომხმარებლის სახელი$smtp_password = "pAsSwORd" ; // SMTP სერვერზე ავტორიზაციის პაროლი$mail_from = " [ელფოსტა დაცულია]" ; // საფოსტო ყუთი, საიდანაც იგზავნება წერილი$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($sock, 512);<" . $mail_from . ">if (! $sock ) ( printf ("Socket არ არის შექმნილი\n"); exit(1); ) smtp_msg ($sock, "HELO" . $_SERVER ["SERVER_NAME" ]); smtp_msg ($sock, "AUTH LOGIN"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock , "MAIL FROM:<" . $reciever . ">" ); smtp_msg ($sock, "DATA"); $headers = "თემა: " . $subject. "\r\n" . $headers; $data = $headers. "\r\n\r\n" $content . "\r\n" ($sock) "გამართვა" ]) && $_SERVER [ "გამართვა" ]) (printf ("გაგზავნა ჩვენგან: %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock, " $msg \r\n"); $str = fgets ($sock, 512); if (! $sock) (printf ("Socket არის ქვემოთ\n"); გასვლა(1); ) else (if (isset($_SERVER ["გამართვა" ]) && $_SERVER ["გამართვა" ]) (printf ("მიიღეს სერვერიდან: %s
" , nl2br (htmlspecialchars ($str )); ) $e = აფეთქება (" " , $str ); $code = array_shift ($e); $str = implode ( " " , $e ); თუ ($code > 499 ) ( printf ( "SMTP საუბრის პრობლემები.

კოდი %d.
შეტყობინება %s
"
, $code , $str );

გასასვლელი (1);

) ) ) ?>

ჩამოტვირთეთ მზა სკრიპტის მაგალითი MailSmtp() ფუნქციით: smtpauth.php.sampleთქვენ შეგიძლიათ გამოიყენოთ ზემოთ აღწერილი MailSmtp() ფუნქცია, რათა პირდაპირ შეცვალოთ mail() ფუნქციის მაგალითი PHP-ში: // შეტყობინების სათაურები, ისინი განსაზღვრავენ შეტყობინების დაშიფვრას, From, To ველებს და ა.შ.$headers = "MIME-ვერსია: 1.0\r\n" ; $headers .= "შინაარსის ტიპი: text/html; charset=windows-1251\r\n" " ; ; $headers .= "მისამართი: $to \r\n" ; $headers .="From: გამგზავნის სახელი
// ფოსტა ($to, $subject, $message, $headers); require_once "smtpauth.php" ;  MailSmtp ($to, $subject, $message, $headers);  ) ?> ვისთვის: 
 
 

ტექსტი:

გაგზავნე!

იმისათვის, რომ ამ ფორმამ იმუშაოს mail() ფუნქციის გარეშე, ჩვენ ჩავრთეთ smtpauth.php ფაილი request_once-ის მეშვეობით და გამოვიძახეთ მასში აღწერილი MailSmtp() ფუნქცია mail(-ის მსგავსი არგუმენტებით). ამავდროულად, ჩვენ დავაფიქსირეთ mail() გამოძახება კოდში, რათა თავიდან ავიცილოთ შეცდომები სკრიპტის შესრულებისას. როგორ გავაგზავნოთ ელფოსტა ASP.NET-ის გამოყენებით?თუ იყენებთ 2.0 ვერსიას, მაშინ იყენებთ MailMessage კლასს

System.Net.Mail

), კარგად არის აღწერილი.

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); ქვემოთ მოცემულია მისი გამოყენების მაგალითები C# და VisualBasic ენებისთვის:მაგალითი C# ენისთვის: [ელფოსტა დაცულია]"); // ახალი ასოს შექმნა message.to.Add(" // მიმღების მისამართის დამატება message.From = new MailAddress("from@ domain.tld", "გამომგზავნი_სახელი"); // გამგზავნის სახელისა და მისამართის მითითებით message.Subject = "წერილის თემა"; // წერილის თემის დაზუსტება message.BodyEncoding = System.Text.Encoding.UTF8; // ასოს კოდირების მითითება message.Body = "შეტყობინების ტექსტი"; // წერილის ტექსტის (სხეულის) დაზუსტება SmtpClient კლიენტი = new SmtpClient("smtp.site",25); // ახალი კავშირის შექმნა სერვერთან "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // განსაზღვრავს შეტყობინებების გაგზავნის მეთოდს client.EnableSsl = false; // გამორთავს სერვერთან უსაფრთხო კავშირის გამოყენების აუცილებლობას client.UseDefaultCredentials = false; // გამორთეთ ნაგულისხმევი ავტორიზაციის დეტალების გამოყენება client.Credentials = new NetworkCredential("postmaster@ // მიმღების მისამართის დამატება", "***პაროლი***"); // SMTP სერვერზე ავტორიზაციისთვის საჭირო დეტალების (მომხმარებლის სახელი და პაროლი) მითითებაკლიენტი.გაგზავნა(მესიჯი); // შეტყობინების გაგზავნა %>

ჩამოტვირთეთ დასრულებული ფორმის მაგალითი, რომელიც აჩვენებს ამ მეთოდის გამოყენებას: MailForm.aspx.

VisualBasic ენის მაგალითი:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@// მიმღების მისამართის დამატება", "Sender_name") smtpMssg.To.Add (" [ელფოსტა დაცულია]") მიმღების მისამართის დამატება smtpMssg.Subject = "ელფოსტის სათაური" „წერილის საგნის მითითება smtpMssg.Body = "შეტყობინების ტექსტი" „წერილის ტექსტის (სხეულის) მითითება smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 "წერილის კოდირების მითითება smtpMssg.IsBodyHtml = false ასოს ფორმატის მითითება (true - HTML, false - არა HTML) Dim SmtpMail როგორც ახალი SmtpClient ("smtp.site", 25) " ტიპის ახალი ობიექტის "SmtpClient" დეკლარაცია SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network „წერილის მიწოდების მეთოდის მითითება SmtpMail.UseDefaultCredentials = False "გამორთვა ავტორიზაციის სერთიფიკატების ნაგულისხმევად" SmtpMail.EnableSsl = False " გამორთავს სერვერთან უსაფრთხო კავშირის გამოყენების აუცილებლობას SmtpMail.Credentials = new NetworkCredential("postmaster@ // მიმღების მისამართის დამატება", "***პაროლი***") SMTP სერვერზე ავტორიზაციისთვის საჭირო დეტალების (მომხმარებლის სახელი და პაროლი) მითითებით SmtpMail.Send(smtpMssg) "მესიჯის გაგზავნა %>

ასევე არის მოძველებული (და მოძველებული) SmtpMail კლასი (სახელთა სივრცის გამოყენებით System.Web.Mail). ქვემოთ მოცემულია VisualBasic ენის გამოყენების მაგალითი:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage "MailMessage" ტიპის ახალი ობიექტის დეკლარაცია smtpMssg.From = "გამომგზავნი_სახელი // მიმღების მისამართის დამატება>" „გამგზავნის სახელისა და მისამართის მითითება smtpMssg.To = "admin@ // მიმღების მისამართის დამატება" " მიმღების მისამართის მითითება smtpMssg.BodyFormat = MailFormat.Text "წერილის ფორმატის მითითება smtpMssg.BodyEncoding = Encoding.UTF8 "წერილის კოდირების მითითებით smtpMssg.Subject = "ელფოსტის სათაური" „წერილის საგნის მითითება smtpMssg.Body = "შეტყობინების ტექსტი" “ წერილის ტექსტის მითითება smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "მითითებს სერვერზე SMTP ავტორიზაციის აუცილებლობაზე smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ // მიმღების მისამართის დამატება") "მომხმარებლის სახელი ავტორიზაციისთვის smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***პაროლი***") "პაროლი ავტორიზაციისთვის SmtpMail.SmtpServer = "smtp.site" " SMTP სერვერის მისამართის მითითებით SmtpMail.Send(smtpMssg) "მესიჯის გაგზავნა %>

როგორ გავაგზავნოთ ელფოსტა ASP-ის გამოყენებით?

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

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@// მიმღების მისამართის დამატება" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "პაროლი" .განახლების დასრულება Set cdoMessage = CreateObject("CDO.Message") cdoMessage Set .Configuration = iConfig .From = "ტესტი მომხმარებელი // მიმღების მისამართის დამატება>" .To = "მომხმარებელი " .Subject = "გამარჯობა, მომხმარებელო" .TextBody = "მე ვწერ ამ შეტყობინებას ASP სკრიპტიდან." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>

ზოგიერთ CMS-ს უკვე აქვს ჩაშენებული ინსტრუმენტები კორესპონდენციის ან შესაბამისი მოდულების გასაგზავნად.

Wordpress

ამ CMS-სთვის არის სპეციალური მოდული "WP Mail SMTP", მისი კონფიგურაციის მაგალითი აღწერილია მოდულის გვერდზე.

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

ჯომლა

ადმინისტრაციის პანელში გადადით "ზოგადი პარამეტრების" განყოფილებაში, აირჩიეთ "სერვერის" ჩანართი. "ფოსტა" ველში თქვენ უნდა აირჩიოთ გაგზავნის მეთოდი, როგორც "SMTP სერვერი", ველებში "SMTP სერვერის მისამართი" და "SMTP შესვლა" და "SMTP პაროლი" მიუთითეთ საფოსტო სისტემის შესაბამისი დეტალები, მაგალითად: smtp.site, box@your_domainდა შესაბამისი პაროლი.

დრუპალი

ამ CMS-ს ასევე აქვს საკუთარი მოდული SMTP სერვერთან მუშაობისთვის PHPMailer.თქვენ შეგიძლიათ ჩამოტვირთოთ ეს მოდული მის გვერდზე CMS Drupal-ის ვებსაიტზე, მოდულის ინსტალაციის აღწერა ხელმისაწვდომია არქივში.

NetCat

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

  • ჩამოტვირთეთ არქივი საჭირო ფაილებით ჩვენი საიტიდან ( send_auth_mail.phpდა mail.inc.php) და ამოალაგეთ იგი თქვენს კომპიუტერში;
  • ფაილის რედაქტირება send_auth_mail.phpარქივიდან, რომელშიც მითითებულია კავშირის დეტალები სასურველ SMTP სერვერთან:

    • $mail_smtpServer = "smtp.site"; (SMTP სერვერის მისამართი)
    • $mail_port = "25" ; (დაკავშირების პორტი)
    • $mail_username = "[ელფოსტა დაცულია]" ; (მომხმარებლის სახელი SMTP სერვერზე ავტორიზაციისთვის)
    • $mail_password = "პაროლი"; (პაროლი ავტორიზაციისთვის SMTP სერვერზე)
  • შექმენით ფაილის სარეზერვო ასლი domain.tld/www/netcat/admin/mail.inc.php;
  • ატვირთეთ ფაილები send_auth_mail.phpდა mail.inc.phpვირტუალურ საიტზე დირექტორიაში domain.tld/www/netcat/admin/

// მიმღების მისამართის დამატებაუნდა შეიცვალოს თქვენი დომენის სახელით.

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

© 2024 ermake.ru -- კომპიუტერის შეკეთების შესახებ - საინფორმაციო პორტალი