Php pochta va smtp ishlash tamoyillari. Elektron pochta xabarlarini yuborish (SMTP va boshqalar
Mahalliy serverdan SMTP orqali pochta jo'natish sizga mahalliy kompyuterda joylashgan saytdan yoki oddiyroq aytganda, mahalliy serverdan xabarlarni yuborishni sinab ko'rish imkonini beradi. Buning uchun siz Yandex, Google yoki mail.ru har qanday pochta xizmatidan foydalanishingiz mumkin.
Birinchidan, SMTP (Simple Mail Transfer Protocol) keng tarqalgan tarmoq protokoli, uzatish uchun mo'ljallangan elektron pochta TCP/IP tarmoqlarida. Va barcha mashhur elektron pochta xizmatlarida bunday protokollar mavjud.
Mahalliy serverlar paydo bo'lishi bilan, individual skriptlar yoki cms tizimlarining ishlashini tekshirish uchun hosting provayderini tanlashning hojati yo'q edi, buning uchun kamroq to'lanadi. Hamma narsani kompyuterda sinab ko'rish ancha oson va keyin siz "qilgan" ni hammaga ko'rsatishingiz mumkin.
Ushbu serverlarning aksariyati allaqachon o'rnatilgan dasturiy ta'minot va pochta bilan ishlash uchun kerakli funksionallik, siz uni to'g'ri sozlashingiz kerak.
Bunday pochtaning funksionalligini tekshirish uchun minimal talab qilinadi:
- Openserverdan mahalliy server sifatida foydalanishingiz mumkin.
- Va oddiy skript, uning shablonini quyida topish mumkin.
- Siz har qanday pochta serveridan foydalanishingiz mumkin.
SMTP skriptini sozlash orqali PHP pochta jo'natish
Quyida nusxa ko'chiradigan yoki yuzlab shunga o'xshash saytlardan yuklab olinadigan oddiy skript shablonini tahrirlash kerak.
Avval siz skript shablonidagi ba'zi qiymatlarni o'zgartirishingiz kerak.
uchun
— pochta xabari yuboriladigan pochta manziliga o'zgartirish.
mavzu
- xat mavzusi
xabar
— xabarning o'zi yoki xatning asosiy qismi.
Mening skriptimga misol:
Siz, albatta, funksiyani biroz kengaytirishingiz va skriptni pochta jo'natish haqidagi xabarni ko'rsatishingiz mumkin. Garchi aslida SMTP serveri jo'natishni amalga oshiradi va skript faqat xabarni yaratadi.
Masalan, siz buni yozishingiz mumkin:
Barcha almashtirilgan qiymatlar tirnoq ichida bo'lishi kerak, aks holda skript xatoga yo'l qo'yadi. Shundan so'ng siz skriptni mahalliy server papkasida saqlashingiz mumkin.
Masalan: domains/send/index.php va SMTP opensrerver orqali xat yuborishni sozlashni boshlang.
Pochta qiymat o'rniga skriptda ko'rsatilgan istalgan manzilga keladi "ga" , lekin bu xat ochiq server sozlamalarida ko'rsatilgan aniq SMTP tomonidan qayta ishlanadi va yuboriladi.
- Server ishga tushirilmoqda
- "Pochta" menyusidagi sozlamalar bilan ochiq server modulini oching
- Biz barcha maydonlarni rasmda ko'rsatilganidek to'ldiramiz, shu bilan birga Yandex-dagi haqiqiy pochta qutisidan foydalanuvchi nomi, jo'natuvchining elektron pochtasi va parolini almashtiramiz.
Biz sozlamalarni saqlaymiz va server qayta ishga tushirilgandan so'ng siz skriptning o'ziga kirishingiz mumkin. "Mening saytlarim" jildidan avval saqlangan index.php skripti joylashgan "yuborish" jildini oching.
Ushbu skriptga kirish bilanoq, yangi brauzer oynasida skript tugallanganligini ko'rsatadigan ma'lumotlar paydo bo'ladi.
Shundan so'ng siz o'zingizni tekshirishingiz kerak pochta qutisi, kimning manzili ssenariyda ko'rsatilgan, xat kelganmi yoki yo'qmi.
Agar u yo'q bo'lsa, bu biror narsa to'g'ri sozlanmaganligini yoki xat spam jildiga tushganligini anglatadi.
Boshqa barcha sozlamalar o'xshash ko'rinadi, lekin har holda Qo'shimcha ma'lumot zarar qilmaydi.
SMTP mail ru orqali xat yuborishni sozlash uchun siz Yandex parametrlarini mail ru parametrlari bilan almashtirishingiz kifoya.
Va har safar qayta qurmaslik uchun mahalliy server, turli ochiq server profillarini sozlash eng yaxshisidir. Buni qanday qilish video darsida ko'rsatilgan.
Bunday holda, faqat profilni yuklash kifoya qiladi va ushbu profil uchun ko'rsatilgan barcha sozlamalar serverni qayta ishga tushirgandan so'ng mavjud bo'ladi. Bu juda qulay narsa va juda oddiy ishlaydi.
Har bir profil uchun (u qanday nomlanishi muhim emas), agar siz skriptlar, cms tizimlari va turli parametrlarga ega ilovalardan foydalanishni rejalashtirmasangiz, o'z sozlamalarini o'rnatishingiz kerak.
Agar yo'q bo'lsa, siz standart sozlamalar bilan ishlashingiz mumkin.
SMTP mail ru-ga kelsak, bu erda hamma narsa bir xil.
Yandex ma'lumotlari mail ru ma'lumotlariga o'zgartirildi
smtp google orqali pochta jo'natish
Google SMTP orqali xat yuborishni sozlash uchun biroz harakat talab etiladi.
Birinchidan, Google-da profil yaratish boshqa Yandex va mail ru tizimlariga qaraganda qiyinroq
Ikkinchidan, agar siz login ma'lumotlaringizni taqdim qilsangiz ham, tizim shunchaki xatni o'tkazib yubormaydi. Boshlash uchun u keyingi ko'rsatmalar haqida barcha kerakli ma'lumotlarni o'z ichiga olgan xat yuboradi.
Aks holda Google uchun u xuddi shu tarzda sozlangan. Faqat barcha ma'lumotlar o'zgaradi.
Boshqa SMTP orqali xat yuborishni sozlash uchun barcha ma'lumotlar taxminan bir xil bo'ladi.
Agar hamma narsa siz uchun ishlagan bo'lsa va xatlar ko'rsatilgan manzilga etib kelgan bo'lsa, unda hamma narsa to'g'ri bajarilgan. Izohlarda tajribangizni baham ko'rsangiz yaxshi bo'lardi.
PHP pochta
Ushbu funktsiya sukut bo'yicha Email yuborish sifatida amalga oshiriladi. Bu funksiya elektron pochta xabarlarini yuborish uchun uchinchi tomon serverini talab qilmaydi. Ushbu funktsiyaning to'g'riligini tekshirish uchun sayt joylashgan papkada test.php faylini yarating va u erga quyidagi kodni joylashtiring:
Buning o'rniga qayerda "E-PochtaQabul qiluvchi" Xat yuborilishi kerak bo'lgan elektron pochta manzilini kiriting.
Joy bu fayl saytingizning ildizida.
Keyin manzil satriga www.YourDomain/test.php kiriting. Agar ko'rsatilgan elektron pochta manziliga xat olingan bo'lsa, sizning xostingingiz xatlarni yuborish funktsiyasi bilan to'g'ri ishlaydi " PHP pochtasi". Xat spamga tushib qolgan bo'lishi mumkin, shuning uchun uni ham tekshirish kerak.
Agar xat tushunarsiz kodlashda kelgan bo'lsa, qatorni o'zgartiring: "Pochta yuborilishi tekshirilmoqda" yoqilgan "Xat yuborilishi tekshirilmoqda", "Content-type:text/html;charset=utf-8".
Va xatni brauzeringizning manzil satri orqali yuborishni takrorlang.
Agar yuqoridagi manipulyatsiyalardan so'ng test xati yakuniy qabul qiluvchiga etib bormasa, siz hosting texnik yordamiga murojaat qilishingiz kerak.
Kamchiliklar orasida bu usul Shuni ta'kidlash kerakki, ish doimiy emas bu usul. Xosting tomonida elektron pochta xabarlarini yuborishda uzilishlar bo'lishi mumkin.
Ushbu usulning asosiy kamchiligi shundaki, mijozlarning elektron pochtalari orqali olingan barcha xatlar pochta xizmatlari (gmail, mail.ru, yandex.ru) tomonidan tan olinmaydi, chunki ular to'g'ridan-to'g'ri veb-saytingizdan yuborilgan.
Gmail pochta xizmati ushbu xatlarni savol belgisi va imzo bilan ko'rsatadi: "Gmail tizimi bu xat YourDomain domenidan yuborilganligini tasdiqlay olmadi. Bu spam bo'lishi mumkin."
Bunday vaziyatdan qochish uchun .
SMTP (oddiy pochta uzatish protokoli)
SMTP - pochta uzatish protokoli. Umuman olganda, ushbu protokol yordamida pochta uzatishni sozlash uchun sizga SMTP serverining o'zi kerak bo'ladi. yandex.ru korporativ (domen) pochtasidan SMTP serveri sifatida foydalanishning eng keng tarqalgan varianti https://pdd.yandex.ru/ hisoblanadi.
Bu birinchi navbatda zarur hisob (pochta) yandex, uning asosida domeningiz uchun elektron pochta xabarlari yaratiladi: “order@YourDomain” “info@YourDomain”… Asosiy hisob hech qayerda koʻrinmaydi va faqat kelajakda unga asoslangan domen xatlarini yaratish uchun ishlatiladi.
Shaxsiy Yandex hisob qaydnomangizda avtorizatsiya qilingandan so'ng, https://pdd.yandex.ru/ havolasida domen pochtasi yaratiladi. Bu foydalanuvchilar "Yuborish" maydonida ko'radigan domen elektron pochta manzilidir.
SMTP orqali elektron pochta xabarlarini yuborishda "Yuboruvchi" maydoni talab qilinadi. Xat yuborish uchun SMTP dan foydalanish, " kombinatsiyasi Domen" - "Elektron pochta", shu bilan xatlar pochta xizmatlari tomonidan tan olinadi.
Ushbu usulning kamchiliklari orasida domen pochta portretini "yuklash" mumkin emasligini ta'kidlash kerak, chunki pochta xizmatlarining o'zi hali bu funksiyani ta'minlamaydi.
SMTP orqali xat yuborish sozlamalari
Veb-sayt quruvchilar Joomla CMS-dan foydalangan holda veb-sayt elektron pochtasi bilan bog'liq muammoga duch kelgan holatlar mavjud. Misol uchun, ariza orqali xat yuborilganda fikr-mulohaza Quyidagi turdagi xatolar paydo bo'lishi mumkin: "Pochta funktsiyasini ishga tushirib bo'lmadi" yoki "Pochta funksiyasini chaqirib bo'lmadi". Xatni xatosiz yuborish ham mumkin, ammo natijada u hali ham adresatga etib bormaydi.
Nima uchun bu muammolar pochta bilan sodir bo'ladi? Bu savolga javob berish uchun siz boshqaruv panelidagi quyidagi yo'lga o'tishingiz kerak: "Tizim" - "Umumiy sozlamalar" - "Server" yorlig'i - "Pochta sozlamalari" bo'limi.
CMS Joomla xatlarni yuborishning uchta mexanizmini taqdim etadi: PHP Mail, Sendmail va SMTP. Odatiy bo'lib, PHP Mail ishlatiladi, bu ko'pincha muammolarni keltirib chiqaradi, bu asosan ishlatiladigan hosting sozlamalari bilan bog'liq.
Yuqoridagilarga asoslanib, biz xulosa qilamiz: yo yordam uchun hosting provayderiga murojaat qilamiz yoki xat yuborishning Sendmail yoki SMTP usulidan foydalanamiz. Keling, SMTP dan foydalanishga e'tibor qarataylik.
SMTP yordamida pochta jo'natish sozlamalari
SMTP (Simple Mail Transfer Protocol) elektron pochtani uzatish uchun ishlatiladigan tarmoq protokolidir. SMTP dan foydalanish uchun siz foydalaniladigan maxsus pochta serveri sozlamalarini to'g'ri sozlashingiz kerak.
Ko'rish uchun SMTP sozlamalari, "Yuborish usuli" da "SMTP" ni tanlashingiz kerak. Keling, mashhur pochta serverlarining har bir sozlamalarini ko'rib chiqaylik: Yandex, Mail, Gmail, Rambler va Yahoo.
Yandex uchun SMTP sozlamalari
- Veb-sayt elektron pochtasi: yandex.ru saytidagi pochta qutisi, masalan: [elektron pochta himoyalangan]
- SMTP xavfsizligi: SSL
- SMTP server porti: 465
- SMTP foydalanuvchi nomi: yandex.ru saytida pochta qutisiga kirish, masalan: xasanov (@yandex.ru holda)
- SMTP serveri: smtp.yandex.ru
Pochta uchun SMTP sozlamalari
- Veb-sayt elektron pochtasi: mail.ru saytidagi pochta qutisi, masalan: [elektron pochta himoyalangan]
- Xat jo'natuvchisi: oluvchi tomonidan "Yuborish" maydonida ko'rsatiladigan yozuv
- Pochta yuborishni o'chirish: yoqish/o'chirish. ommaviy pochta funksiyalari
- SMTP serverida avtorizatsiya: Ha
- SMTP xavfsizligi: SSL
- SMTP server porti: 465
- SMTP foydalanuvchi nomi: mail.ru saytidagi pochta qutisi, masalan: [elektron pochta himoyalangan]
- SMTP paroli: pochta qutisi paroli
- SMTP serveri: smtp.mail.ru
Gmail uchun SMTP sozlamalari
- Veb-sayt elektron pochtasi: gmail.com pochta qutisi, masalan: [elektron pochta himoyalangan]
- Xat jo'natuvchisi: oluvchi tomonidan "Yuborish" maydonida ko'rsatiladigan yozuv
- Pochta yuborishni o'chirish: yoqish/o'chirish. ommaviy pochta funksiyalari
- SMTP serverida avtorizatsiya: Ha
- SMTP xavfsizligi: SSL
- SMTP server porti: 465
- SMTP foydalanuvchi nomi: gmail.com pochta qutisi, masalan: [elektron pochta himoyalangan]
- SMTP paroli: pochta qutisi paroli
- SMTP serveri: smtp.gmail.com
Rambler uchun SMTP sozlamalari
- Veb-sayt elektron pochtasi: rambler.ru saytidagi pochta qutisi, masalan: [elektron pochta himoyalangan]
- Xat jo'natuvchisi: oluvchi tomonidan "Yuborish" maydonida ko'rsatiladigan yozuv
PHPMailer - bu sizning veb-saytingizdan elektron pochta xabarlarini yuborish uchun juda qulay va mashhur kutubxona. Ushbu maqola kutubxonaning asosiy sozlamalarini tavsiflaydi va xabarlarni yuborish uchun kod misollarini beradi. PHPMailer o'z assortimentida pochta bilan ishlashda siz xohlagan hamma narsani o'z ichiga oladi: yuborish turli yo'llar bilan, turli serverlar orqali, shu jumladan smtp orqali, xatlaringizni spamga tushmasligi uchun shifrlash va imzolash qobiliyati va boshqalar.
PHPMailer kutubxonasini https://github.com/PHPMailer/PHPMailer manzilidan yuklab olishingiz mumkin (“Klonlash yoki yuklab olish” tugmasi).
Birinchidan, men bir juftlikni ko'rib chiqaman oddiy misollar PHPMailer yordamida elektron pochta xabarlarini qanday yuborishni aniq qilish uchun.
PHPMailer yordamida mail() funksiyasi orqali elektron pochta xabarlarini yuborish
Agar siz o'zingizning hostingingiz orqali elektron pochta xabarlarini yubormoqchi bo'lsangiz pochta serveri, keyin hamma narsa juda oddiy va shunday ko'rinadi:
// PHPMailer kutubxonasini qo'shing PHPMailer\PHPMailer\PHPMailer foydalaning; "PHPMailer/PHPMailer.php" talab qilinadi; // Xat yaratish $mail = new PHPMailer(); $mail->setFrom(" [elektron pochta himoyalangan]", "Ivan Ivanov"); // kimdan (elektron pochta va ism) $mail->addAddress(" [elektron pochta himoyalangan]", "Vasya Petrov"); // kimga (elektron pochta va ism) $mail->Mavzu = "Test"; // xat mavzusi // html matn harflar $mail->msgHTML("
Salom!
Bu sinov xati.
"); // Send if ($mail->send()) ( echo "Xabar yuborildi!"; ) else ( echo "Xato: " . $mail->ErrorInfo; )Ko'rib turganingizdek, hamma narsa juda oddiy: biz kutubxonani bog'laymiz, kimdan, kimga, xatning mavzusi va matnini to'ldirib, jo'natamiz. Elektron pochta xabarlarini shu tarzda yuborish faqat domeningizdagi elektron pochta manzillaridan ishlaydi (agar ular boshqa pochta jo'natuvchilariga ulanmagan bo'lsa).
Yandex va Google misolida PHPMailer yordamida SMTP orqali elektron pochta xabarlarini yuborish
Siz xatni boshqa pochta orqali ham yuborishingiz mumkin, masalan, orqali Yandex. Kod shunday ko'rinadi:
// PHPMailer kutubxonasini qo'shing PHPMailer\PHPMailer\PHPMailer foydalaning; PHPMailer\PHPMailer\SMTP-dan foydalaning; "PHPMailer/PHPMailer.php" talab qilinadi; "PHPMailer/SMTP.php" talab qilinadi; // Xat yaratish $mail = new PHPMailer(); $mail->isSMTP(); // SMTP orqali jo'natish $mail->Xost = "smtp.yandex.ru"; // SMTP server manzili $mail->SMTPauth = rost; // SMTP autentifikatsiyasini yoqish $mail->Foydalanuvchi nomi = "login"; // foydalanuvchi nomingiz (domen va @siz) $mail->Parol = "parol"; // parolingiz $mail->SMTPSecure = "ssl"; // ssl shifrlash $mail->Port = 465; // ulanish porti $mail->setFrom(" [elektron pochta himoyalangan]", "Ivan Ivanov"); // kimdan $mail->addAddress(" [elektron pochta himoyalangan]", "Vasya Petrov"); // kimga $mail->Mavzu = "Test"; $mail->msgHTML("
Salom!
Bu sinov xati.
"); // Send if ($mail->send()) ( echo "Xabar yuborildi!"; ) else ( echo "Xato: " . $mail->ErrorInfo; )Google orqali elektron pochta xabarlarini yuborish bitta ogohlantirish bor: kerak google hisobi ishonchsiz ilovalarga kirishga ruxsat bering. Buni amalga oshirish uchun siz https://myaccount.google.com hisobingizga kirishingiz, xavfsizlikka o'tishingiz, "Hisobingizga kirish huquqiga ega bo'lgan ishonchsiz ilovalar" bo'limiga o'tishingiz va u erda "Ruxsat berilgan" ga o'tishingiz kerak. Yozish vaqtida bu sahifa https://myaccount.google.com/u/0/lesssecureapps.
$mail->Xost = "smtp.gmail.com"; // SMTP server manzili $mail->SMTPauth = rost; // SMTP autentifikatsiyasini yoqish $mail->Foydalanuvchi nomi = "login"; // foydalanuvchi ismingiz $mail->Parol = "parol"; // parolingiz $mail->SMTPSecure = "ssl"; // ssl shifrlash $mail->Port = 465; // ulanish porti
Agar siz smtp orqali yuborish dasturini birinchi marta ishlatayotgan bo'lsangiz, yuborishdan oldin qo'shimcha ravishda foydalanish tavsiya etiladi. $mail->SMTPDebug = 1; mijoz va smtp serveridan barcha xabarlarni olish uchun, ya'ni. Ulanish, avtorizatsiya va hokazolarning butun jarayoni ekranda ko'rsatiladi, bu sizning dasturingizni disk raskadrovka qilish uchun juda foydali.
PHPMailer yordamida ilova bilan elektron pochta xabarini yuborish
Bu erda hamma narsa juda oddiy, siz faqat usuldan foydalanishingiz kerak ilova qo'shish. Men bir misol keltiraman va shu bilan birga yana bir nechtasini ko'rsataman qo'shimcha funktsiyalar:
// PHPMailer kutubxonasini qo'shing PHPMailer\PHPMailer\PHPMailer foydalaning; PHPMailer\PHPMailer\Exception-dan foydalaning; "PHPMailer/PHPMailer.php" talab qilinadi; "PHPMailer/Exception.php" talab qilinadi; // Xat yaratish $mail = yangi PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [elektron pochta himoyalangan]", "Ivan Ivanov"); // kimdan $mail->addReplyTo(" [elektron pochta himoyalangan]", "Ivan Ivanov"); // qaytish manzili $mail->addAddress(" [elektron pochta himoyalangan]", "Vasya Petrov"); // kimga $mail->Mavzu = "Test"; // mavzu $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // "tana" ni oling $mail->AltBody faylidagi xat = "Oddiy matnli xat" // agar mijoz html $mail->addAttachment("my_file.txt" // bitta faylni qo'shib qo'ysa, $mail-); >addAttachment("phpmailer) .jpg"); // ikkinchi faylni biriktirish // Send if ($mail->send()) ( echo "Xabar yuborildi!"; ) else ( echo "Xato: " . $mail- >ErrorInfo;
AddAddress yordamida bir nechta qabul qiluvchi manzillarini qo'shishingiz mumkin. Yoki, agar kerak bo'lsa, siz, aksincha, usul yordamida barcha qabul qiluvchi manzillarini tozalashingiz mumkin aniq manzillar(). yordamida barcha biriktirmalarni o'chirishingiz mumkin clearAttachments().
Siz ham foydalanishingiz mumkin AddEmbeddedImage elektron pochtaga html kodida foydalanish uchun moʻljallangan va yuklab olish mumkin boʻlmagan ilovani (odatda rasm) qoʻshish uchun. Yuklab olish mumkin bo'lmagan xatdagi rasmdan foydalanishga misol:
// PHPMailer kutubxonasini qo'shing PHPMailer\PHPMailer\PHPMailer foydalaning; "PHPMailer/PHPMailer.php" talab qilinadi; //Xat yaratish $mail = yangi PHPMailer; $mail->IsHTML(to'g'ri); $mail->setFrom(" [elektron pochta himoyalangan]", "Ivan Ivanov"); $mail->addAddress(" [elektron pochta himoyalangan]", "Vasya Petrov"); $mail->Mavzu = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "
Tasvir html kodda
"; // $mail->send();Shunday qilib, siz yuborishingiz mumkin tasvirlar bilan harflar, ular faqat xatning asosiy qismida joylashgan, ammo ilova sifatida yuklab bo'lmaydi. Ushbu rasmlardan xatning html kodining istalgan joyidan foydalanish mumkin, faqat url manzili o'rniga AddEmbeddedImage-da foydalangan rasm cid-ni ko'rsatish kifoya.
PHPMailer orqali imzolangan va shifrlangan elektron pochta xabarlarini yuborish
Odatiy bo'lib, PHPMailer barcha yuborilgan xabarlarni shifrlaydi. Elektron pochtani shifrlashni faqat kod yordamida SMTP orqali yuborayotganda o'chirib qo'yishingiz mumkin:
$mail->SMTPSecure = noto'g'ri; $mail->SMTPAutoTLS = noto'g'ri;
Kimga xatni DKIM imzosi bilan imzolang, siz bir necha bosqichlarni bajarishingiz kerak:
- Domeningiz uchun shaxsiy va ochiq kalitlarni yarating
- Ochiq kalit bilan TXT domeni uchun DNS yozuvini qo'shing
- Elektron pochta xabarini yuborishdan oldin PHPMailer-da DKIM imzosini sozlang
Endi men har bir qadamni biroz batafsilroq tasvirlab beraman.
Shaxsiy va ochiq kalitlarni yaratish
Agar sizda Linux xostingi bo'lsa va Shell-ga kirish imkoniga ega bo'lsangiz, asosiy fayllarni yaratish armutni o'chirish kabi osondir, siz oddiy foydalanuvchi huquqlaringiz bilan faqat ikkita buyruqni bajarishingiz kerak bo'ladi:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
Mos ravishda, test-private.pem Va test-public.pem- bu shaxsiy va ochiq kalitlar. Siz ularni saytga tashrif buyuruvchilar yoki sizdan boshqa hech kimga kira olmaydigan papkada saqlashingiz kerak.
Agar qobiqdagi buyruqlarni bajarish imkoni bo'lmasa, shaxsiy va ochiq kalitlarni yaratish va ularni fayllarga saqlash uchun siz quyidagi koddan foydalanishingiz mumkin:
$domen = "test.ru"; // domeningiz $privatekeyfile = "test-private.pem"; // maxfiy kalit yoziladigan fayl nomi $publickeyfile = "test-public.pem"; // agar (file_exists($privatekeyfile)) ochiq kalit yoziladigan fayl nomi ( echo "
Mavjud kalitlardan foydalanish
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Kalitlarni yarating"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file, $pkey_file =private_key; _tafsilotlari ($pk $publickey = $pubKey["key"];
Shaxsiy kalit (maxfiy saqlang!):
". $privatekey.""; aks-sado "
Ochiq kalit:
". $publickey ."";
Diqqat! Fayllar saqlanadigan papka yozilishi mumkinligiga ishonch hosil qilishni unutmang.
Ochiq kalit bilan DNS yozuvini qo'shish
Sizning xatlaringizni qabul qiladigan pochta serverlari domeningizning DNS yozuvini o'qib, xatdagi imzoni tekshirishlari uchun DNS yozuvi kerak. Odatda, siz domen boshqaruv panelida yoki hosting boshqaruv panelida DNS yozuvini qo'shishingiz mumkin. Agar yozuvni qanday qo'shishni bilmasangiz, hosting provayderingizning yordamiga murojaat qiling.
Quyidagi kabi DNS yozuvini qo'shishingiz kerak:
Kirish nomi: mail._domainkey.test.ru. (oxirida "." nuqta bor)
TTL: 3600 (yoki qaysi biri standart bo'ladi)
Xabar turi: XABAR
Ma'nosi: v=DKIM1; h=sha256; t=s; p=YOUR_PUBLIC_KEY
Kirish nomida test.ru domen nomingiz bilan almashtirilishi kerak. Siz “YOUR_PUBLIC_KEY” so‘zlarini “Ommaviy kalit”dan keyingi oldingi bosqichda olingan matn bilan “-----BEGIN PUBLIC KEY-----” va “-----END OMAVCHI KEY-”siz almashtirasiz. -- --", faqat kalitning o'zi. Bunday holda, kalitning barcha satrlari kerak bo'ladi bir uzun qatorga birlashtiring Shunday qilib, qator uzilishlari bo'lmaydi.
PHPMailer-da DKIM imzosini sozlash va elektron pochta xabarini yuborish
Endi xatni yuborishdan oldin bir nechta PHPMailer sozlamalarini qilish qoladi va u imzolanadi. O'ylaymanki, quyidagi misol hamma narsani aniqlab beradi:
// PHPMailer\PHPMailer\PHPMailer-dan foydalanish kutubxonasini qo'shing; "PHPMailer/PHPMailer.php" talab qilinadi; // Xat yaratish $mail = yangi PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [elektron pochta himoyalangan]"); $mail->addAddress(" [elektron pochta himoyalangan]"); $mail->Mavzu = "Bu sinov"; $mail->msgHTML("
Bu sinov
"); // DKIM imzosini sozlash $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // $ yuboring pochta->send();Albatta test.ru domen nomingizga o'zgartirishingiz kerak va test-private.pem kalit yaratish bosqichida yaratilgan shaxsiy kalit faylining to'liq yo'li va nomiga.
Endi PHPMailer orqali yuborilgan elektron pochta xabarlaringiz shaxsiy kalitingiz bilan DKIM tomonidan imzolanadi.
2019-08-05
Salom, aziz mehmon!
Iltimos, blogni yangilashdagi kechikish uchun meni kechiring. Ammo buning uchun mutlaqo tushunarli tushuntirish mavjud. Axir, yoz, dacha, mehmonlar, o'rmon, suv va boshqa ko'p narsalar edi, bu menga veb-sayt yaratish masalalarini hal qilishga imkon bermadi. Ammo endi men biroz bo'shashdim, mehmonlar ketishdi va men bunga albatta e'tibor bera olaman deb o'ylayman.
Shunday qilib, oxirgi maqolada biz domenimiz pochtasini pochta xizmatlaridan biriga ulaganimizdan so'ng, endi saytdan qanday qilib elektron pochta xabarlarini yuborishingiz mumkinligini ko'rib chiqamiz. Bundan tashqari, bizning maktublarimiz SPAMda qolmasligi uchun, balki ishonchli tarzda, yuqori ehtimollik bilan qabul qiluvchilarimizga yetkaziladi.
Umuman olganda, PHP da xat yuborish uchun o'rnatilgan mail() funksiyasi mavjud. Ammo shuni ta'kidlash kerakki, ushbu usulning soddaligiga qaramay (bu holda, xatlarni yuborish uchun ma'lum parametrlarga ega bo'lgan bitta kod qatorini ko'rsatish kifoya), ushbu parametrdan foydalanish SPAM muammosi bilan bog'liq sezilarli kamchilikka ega. .
Gap shundaki, qabul qiluvchi tomonidagi pochta serverlarining SPAM-ga qarshi filtrlari mail() funksiyasi orqali yuborilgan xatlarni yoqtirmaydi. Va ko'p hollarda, bunday xabarlar qabul qiluvchiga etib borishdan oldin filtrlanadi yoki hatto o'chiriladi.
Va bunday holatlarni iloji boricha yo'q qilish uchun odatda boshqa variant qo'llaniladi, unda xatlar uchinchi tomon pochta xizmati tomonidan amalga oshirilgandek yuboriladi.
Ushbu usul avtorizatsiya bilan SMTP orqali pochta jo'natish deb ataladi. Biz bugun fikr-mulohaza shaklini yuborish misolidan foydalanib ko'rib chiqamiz. Bundan tashqari, buning uchun biz juda mashhur va mashhur PHPMailer kutubxonasidan foydalanamiz, bu esa SMTP orqali xat yuborishni tashkil qilishni juda oson qiladi.
- Fikr-mulohaza xatlarini qanday yuboramiz
- Fikr-mulohaza shaklini yaratish
- PHPMailer kutubxonasini o'rnatish
- Biz SMTP orqali pochta jo'natish uchun skript yaratamiz
- Elektron pochta jo'natmalari tekshirilmoqda
- Manba fayllar sayt
Fikr-mulohaza xatlarini qanday yuboramiz
Boshlashdan oldin amaliy ish Fikr-mulohaza maktublarini yuborganimizdan so'ng, biz avval buni qanday qilishimizni hal qilamiz.
Fikr-mulohaza shakli foydalanuvchiga sayt ma'muri bilan muloqot qilish va o'z xabarini etkazish uchun mo'ljallangan. Odatda, bu shakl bir nechta maydonlardan va "Yuborish" tugmasidan iborat.
Aslida, elektron pochta xabarini yuborish uchun foydalanuvchi va xabarning mazmuni haqida etarli ma'lumot beradigan bir nechta maydonlardan foydalanish kifoya, masalan:
- "Ism" - xabar jo'natuvchining nomini kiritish;
- "E-mail" - jo'natuvchining elektron pochta manzili uchun;
- "Xabar mavzusi";
- "Xabar matni".
Garchi siz boshqalarni qo'shishingiz mumkin. Masalan, agar bu haqiqatan ham zarur bo'lsa, telefon raqami.
Bizning holatda, bunday xatlar sayt ma'murining manziliga bizning domenimiz ulangan pochta xizmatiga ruxsat berilgan haqiqiy pochta qutisidan yuboriladi.
Avvalgi maqolada biz domen pochtasining Yandex.Mail xizmatiga ulanishini tekshirishga e'tibor qaratganimiz sababli, biz ushbu parametr uchun pochta jo'natamiz. Garchi bu muhim bo'lmasa-da. Quyida siz o'zgartirilganda Mail.ru pochta serveri orqali elektron pochta xabarlarini yuborish imkonini beradigan variantlarni ko'rasiz.
Xatlar yuboriladigan haqiqiy pochta qutisi sifatida biz yangi yaratilgan domen pochtasi foydalanuvchisining hisob qaydnomasidan foydalanamiz, masalan, manzili bilan. [elektron pochta himoyalangan]. Va biz bu xatlarni administratorning pochta qutisiga yuboramiz [elektron pochta himoyalangan], biz oldingi maqolada avval yaratgan edik.
Shunday qilib, fikr-mulohaza shaklidan xat jo'natuvchisi pochta qutisi bo'ladi [elektron pochta himoyalangan]., va qabul qiluvchi - [elektron pochta himoyalangan]. Bunday holda, xabarni mazmuni bilan yuborgan foydalanuvchi haqidagi barcha ma'lumotlar yuborilgan xatning asosiy qismida uzatiladi.
Fikr-mulohaza shaklini yaratish
Xatlarni yuborish tartibi to'g'risida qaror qabul qilganimizdan so'ng, endi biz buni amalga oshiradigan fikr-mulohaza shaklini yaratamiz.
Quyida ushbu formaning HTML kodi keltirilgan bo'lib, biz uni "Kontaktlar" sahifasiga joylashtiramiz (maqolalar katalogidagi kontakty.php fayli).