Php mail болон smtp үйлдлийн зарчим. Имэйл илгээх (SMTP vs
Локал серверээс SMTP-ээр захидал илгээх нь локал машин эсвэл энгийн сервер дээр байрлах сайтаас мессеж илгээхийг шалгах боломжийг танд олгоно. Үүнийг хийхийн тулд та Yandex, Google эсвэл mail.ru ямар ч мэйл үйлчилгээг ашиглаж болно.
Юуны өмнө SMTP (Simple Mail Transfer Protocol) нь өргөн хэрэглэгддэг сүлжээний протокол, дамжуулах зориулалттай имэйл TCP/IP сүлжээнд. Бүх алдартай имэйл үйлчилгээнд ийм протокол байдаг.
Орон нутгийн серверүүд гарч ирснээр бие даасан скрипт эсвэл cms системийн гүйцэтгэлийг шалгахын тулд хостинг үйлчилгээ үзүүлэгчийг сонгох шаардлагагүй болж, төлбөр төлөхөөс хамаагүй бага болсон. Бүх зүйлийг компьютер дээр туршиж үзэх нь илүү хялбар бөгөөд дараа нь та "хийсэн" зүйлээ хүн бүрт харуулах боломжтой.
Эдгээр серверүүдийн ихэнх нь аль хэдийн суулгагдсан байдаг програм хангамжмэйлтэй ажиллахад шаардлагатай функцийг агуулсан тул та үүнийг зөв тохируулах хэрэгтэй.
Ийм захидлын ажиллагааг шалгахын тулд хамгийн багадаа:
- Та Openserver-ийг дотоод сервер болгон ашиглаж болно.
- Мөн энгийн скрипт, түүний загварыг доороос олж болно.
- Та ямар ч мэйл сервер ашиглаж болно.
SMTP скрипт тохируулгаар php имэйл илгээж байна
Доор хуулж болох эсвэл ижил төстэй олон зуун сайтаас татаж авах боломжтой энгийн скрипт загварыг засварлах шаардлагатай.
Эхлээд та скрипт загвар дахь зарим утгыг өөрчлөх хэрэгтэй.
руу
— шуудангийн мессежийг илгээх шуудангийн хаяг руу шилжих.
сэдэв
- захидлын сэдэв
мессеж
- мессеж өөрөө эсвэл захидлын үндсэн хэсэг.
Миний скриптийн жишээ:
Та мэдээжийн хэрэг, функцийг бага зэрэг өргөжүүлж, скрипт дээр захидал илгээх тухай мессежийг харуулах боломжтой. Хэдийгээр үнэн хэрэгтээ энэ нь илгээлтийг SMTP сервер бөгөөд скрипт нь зөвхөн мессеж үүсгэдэг.
Жишээлбэл, та үүнийг бичиж болно:
Орлуулсан бүх утгууд нь хашилтанд байх ёстой, эс тэгвээс скрипт нь алдаа гаргах болно. Үүний дараа та скриптийг дотоод серверийн хавтсанд хадгалах боломжтой.
Жишээ нь: domains/send/index.php SMTP opensrerver-ээр имэйл илгээх тохиргоог эхлүүлнэ үү.
Захидал утгын оронд скриптэд заасан дурын хаяг руу ирнэ 'т' , гэхдээ энэ имэйлийг нээлттэй серверийн тохиргоонд заасан яг SMTP-ээр боловсруулж илгээх болно.
- Серверийг эхлүүлж байна
- Нээлттэй серверийн модулийг "мэйл" цэсэнд тохиргоотой нээнэ үү
- Бид зурагт үзүүлсэн шиг бүх талбарыг бөглөж, Yandex дээрх жинхэнэ шуудангийн хайрцгаас хэрэглэгчийн нэр, илгээгчийн имэйл, нууц үгийг орлуулна.
Бид тохиргоог хадгалж, серверийг дахин ажиллуулсны дараа та скриптэд өөрөө хандах боломжтой. "Миний сайтууд" хавтсаас өмнө нь хадгалсан index.php скрипт байрлах "илгээх" хавтсыг нээнэ үү.
Энэ скриптэд хандмагц шинэ хөтчийн цонхонд скрипт дууссаныг илтгэх мэдээлэл гарч ирнэ.
Үүний дараа та өөрийгөө шалгах хэрэгтэй шуудангийн хайрцаг, хэний хаягийг скриптэд заасан, захидал ирсэн эсэх.
Хэрэв энэ нь байхгүй бол энэ нь ямар нэг зүйл буруу тохируулагдсан эсвэл захидал спам хавтсанд орсон гэсэн үг юм.
Бусад бүх тохиргоо нь ижил төстэй харагдаж байна, гэхдээ ямар ч тохиолдолд нэмэлт мэдээлэлөвдөхгүй.
SMTP mail ru-ээр захидал илгээхийг тохируулахын тулд та Yandex параметрүүдийг mail ru параметрээр солих хэрэгтэй.
Тэгээд тэр болгонд дахин бүтээн байгуулалт хийхгүйн тулд локал сервер, өөр өөр нээлттэй серверийн профайлыг тохируулах нь хамгийн сайн арга юм. Үүнийг хэрхэн яаж хийхийг видео зааварт үзүүлэв.
Энэ тохиолдолд профайлыг зүгээр л ачаалахад хангалттай бөгөөд серверийг дахин эхлүүлсний дараа энэ профайлд заасан бүх тохиргоо бэлэн болно. Энэ бол маш тохиромжтой зүйл бөгөөд маш энгийнээр ажилладаг.
Профайл бүрийн хувьд (энэ нь юу гэж нэрлэх нь хамаагүй) өөр өөр параметр бүхий скрипт, cms систем, програм ашиглахаар төлөвлөөгүй бол өөрийн тохиргоог хийх ёстой.
Үгүй бол та анхдагч тохиргоог хийж болно.
SMTP mail ru-ийн хувьд энд бүх зүйл ижил байна.
Yandex өгөгдлийг mail ru өгөгдөл болгон өөрчилсөн
smtp google-ээр дамжуулан захидал илгээж байна
Google SMTP-ээр шуудан илгээхийг тохируулахын тулд бага зэрэг хүчин чармайлт шаардагдана.
Нэгдүгээрт, Google дээр профайл үүсгэх нь бусад Yandex болон mail ru системүүдээс илүү хэцүү байдаг
Хоёрдугаарт, та нэвтрэх мэдээллээ өгсөн байсан ч систем зүгээр л захидал нэвтрүүлэхгүй. Эхлэхийн тулд тэрээр цаашдын зааврын талаар шаардлагатай бүх мэдээллийг агуулсан захидал илгээх болно.
Үгүй бол Google-ийн хувьд энэ нь яг ижил аргаар тохируулагдсан байдаг. Зөвхөн бүх өгөгдөл өөрчлөгддөг.
Бусад SMTP-ээр захидал илгээхийг тохируулахын тулд бүх өгөгдөл ойролцоогоор ижил байх болно.
Хэрэв бүх зүйл танд тохирсон бөгөөд захидал заасан хаяг хүлээн авагчид хүрсэн бол бүх зүйл зөв хийгдсэн болно. Хэрэв та сэтгэгдэл дээр туршлагаа хуваалцвал маш сайн байх болно.
PHP руу шуудан илгээх
Энэ функц нь анхдагчаар имэйл илгээх хэлбэрээр хэрэгждэг. Энэ функц нь имэйлийг дамжуулахын тулд гуравдагч талын сервер шаарддаггүй. Энэ функцийн зөв эсэхийг шалгахын тулд сайттай хавтсанд test.php файл үүсгээд дараах кодыг байрлуулна уу.
Оронд нь хаана "EMAILХүлээн авагч" Захиа илгээх имэйл хаягаа оруулна уу.
Газар энэ файлтаны сайтын үндэс дээр.
Дараа нь хаягийн мөрөнд www.YourDomain/test.php гэж оруулна уу. Хэрэв заасан имэйл хаягаар захидал ирсэн бол таны хостинг захидал илгээх функцтэй зөв ажилладаг. PHP руу шуудан илгээх". Энэ захидал спам болж дууссан байж магадгүй тул үүнийг шалгах шаардлагатай байна.
Хэрэв захидал ойлгомжгүй кодчилолтой ирсэн бол мөрийг өөрчил: "Имэйл илгээхийг шалгаж байна"дээр "Мэйл илгээхийг шалгаж байна", "Агуулгын төрөл: текст/html; charset=utf-8".
Мөн хөтчийнхөө хаягийн талбараар дамжуулан захидлыг дахин илгээнэ үү.
Хэрэв дээрх залилангийн дараа тестийн захидал эцсийн хүлээн авагчид хүрэхгүй бол та хостинг техникийн дэмжлэгтэй холбоо барина уу.
Алдаа дутагдлуудын дунд энэ аргаАжил нь байнгын биш гэдгийг тэмдэглэх нь зүйтэй энэ арга. Хостинг тал дээр имэйл илгээхэд тасалдал гарч болзошгүй.
Энэ аргын гол сул тал нь үйлчлүүлэгчийн имэйлд илгээсэн бүх захидлыг шуудангийн үйлчилгээнүүд (gmail, mail.ru, yandex.ru) таны вэбсайтаас шууд илгээсэн тул хүлээн зөвшөөрөхгүй байх явдал юм.
Gmail мэйл үйлчилгээ нь эдгээр үсгийг асуултын тэмдэг болон гарын үсэгтэй харуулдаг: "Gmail систем энэ захиаг YourDomain домэйноос илгээсэн гэдгийг баталгаажуулж чадсангүй. Энэ нь спам байж магадгүй."
Энэ байдлаас зайлсхийхийн тулд .
SMTP (Энгийн шуудан дамжуулах протокол)
SMTP - шуудан дамжуулах протокол. Нийтдээ энэ протоколыг ашиглан шуудангийн дамжуулалтыг тохируулахын тулд танд SMTP сервер өөрөө хэрэгтэй. yandex.ru корпорацийн (домайн) имэйлийг SMTP сервер болгон ашиглах хамгийн түгээмэл сонголт бол https://pdd.yandex.ru/ юм.
Юуны өмнө энэ нь зайлшгүй шаардлагатай Yandex данс (мэйл), үүний үндсэн дээр таны домэйнд имэйл үүсгэх болно: “order@YourDomain” “info@YourDomain”... Үндсэн бүртгэл нь хаана ч харагдахгүй бөгөөд зөвхөн ирээдүйд түүн дээр тулгуурлан домэйн имэйл үүсгэхэд ашиглагдана.
Таны хувийн Yandex дансанд зөвшөөрөл авсны дараа https://pdd.yandex.ru/ холбоос дээр домэйн шуудан үүсгэгдэнэ. Энэ бол хэрэглэгчид "Илгээгч" талбарт харагдах домэйн имэйл юм.
SMTP-ээр имэйл илгээх үед "Илгээгч" талбар шаардлагатай. SMTP ашиглан захидал илгээх нь " Домэйн" - "Имэйл", ингэснээр захидлуудыг шуудангийн үйлчилгээгээр хүлээн зөвшөөрдөг.
Энэ аргын сул талуудын дунд шуудангийн үйлчилгээнүүд өөрсдөө энэ функцийг хараахан хангаагүй байгаа тул домэйны шуудангийн хөрөг зургийг "ачаалах" боломжгүйг тэмдэглэх нь зүйтэй.
SMTP-ээр захидал илгээх тохиргоо
Вэбсайт бүтээгчид Joomla CMS ашиглан вэбсайтын имэйлтэй холбоотой асуудалтай тулгардаг тохиолдол байдаг. Жишээлбэл, маягтаар захидал илгээх үед санал хүсэлтДараах төрлийн алдаа гарч болзошгүй. "Мэйлийн функцийг эхлүүлж чадсангүй"эсвэл "Мэйлийн функцийг дуудаж чадсангүй". Мөн алдаагүй захидал илгээх боломжтой боловч үр дүнд нь энэ нь хаяг хүлээн авагчид хүрэхгүй хэвээр байна.
Эдгээр асуудал яагаад шуудантай холбоотой байдаг вэ? Энэ асуултад хариулахын тулд та хяналтын самбар дээрх "Систем" - "Ерөнхий тохиргоо" - "Сервер" таб - "Мэйлийн тохиргоо" хэсэгт очих хэрэгтэй.
CMS Joomla нь захидал илгээх гурван механизмаар хангадаг: PHP Mail, Sendmail, SMTP. Анхдагч байдлаар, PHP Mail ашигладаг бөгөөд энэ нь ихэвчлэн ашигласан хостингын тохиргоотой холбоотой асуудал үүсгэдэг.
Дээр дурдсан зүйлс дээр үндэслэн бид хостинг үйлчилгээ үзүүлэгчээс тусламж хүсэх эсвэл захидал илгээх Sendmail эсвэл SMTP аргыг ашигладаг. SMTP ашиглахад анхаарлаа хандуулцгаая.
SMTP ашиглан захидал илгээх тохиргоо
SMTP (Simple Mail Transfer Protocol) нь цахим шуудан дамжуулахад ашигладаг сүлжээний протокол юм. SMTP-г ашиглахын тулд та ашиглах тодорхой имэйл серверийн тохиргоог зөв хийх ёстой.
Харахын тулд SMTP тохиргоо, та "Илгээх арга" дотроос "SMTP"-г сонгох ёстой. Yandex, Mail, Gmail, Rambler, Yahoo зэрэг алдартай имэйл серверүүдийн тохиргоо бүрийг харцгаая.
Yandex-д зориулсан SMTP тохиргоо
- Вэб сайтын имэйл: yandex.ru дээрх шуудангийн хайрцаг, жишээлбэл: [имэйлээр хамгаалагдсан]
- SMTP аюулгүй байдал: SSL
- SMTP серверийн порт: 465
- SMTP хэрэглэгчийн нэр: yandex.ru дээрх шуудангийн хайрцагт нэвтрэх, жишээлбэл: хасанов (@yandex.ru-гүй)
- SMTP сервер: smtp.yandex.ru
Мэйл-д зориулсан SMTP тохиргоо
- Вэб сайтын имэйл: mail.ru дээрх шуудангийн хайрцаг, жишээлбэл: [имэйлээр хамгаалагдсан]
- Захидал илгээгч: "Илгээгч" талбарт хүлээн авагчийн харуулах бичилт
- Мэйл илгээхийг идэвхгүй болгох: асаах/унтраах. масс шуудангийн функцууд
- SMTP сервер дээрх зөвшөөрөл: Тийм
- SMTP аюулгүй байдал: SSL
- SMTP серверийн порт: 465
- SMTP хэрэглэгчийн нэр: mail.ru дээрх шуудангийн хайрцаг, жишээлбэл: [имэйлээр хамгаалагдсан]
- SMTP нууц үг: шуудангийн хайрцагны нууц үг
- SMTP сервер: smtp.mail.ru
Gmail-д зориулсан SMTP тохиргоо
- Вэб сайтын имэйл: gmail.com дээрх шуудангийн хайрцаг, жишээ нь: [имэйлээр хамгаалагдсан]
- Захидал илгээгч: "Илгээгч" талбарт хүлээн авагчийн харуулах бичилт
- Мэйл илгээхийг идэвхгүй болгох: асаах/унтраах. масс шуудангийн функцууд
- SMTP сервер дээрх зөвшөөрөл: Тийм
- SMTP аюулгүй байдал: SSL
- SMTP серверийн порт: 465
- SMTP хэрэглэгчийн нэр: gmail.com шуудангийн хайрцаг, жишээ нь: [имэйлээр хамгаалагдсан]
- SMTP нууц үг: шуудангийн хайрцагны нууц үг
- SMTP сервер: smtp.gmail.com
Rambler-д зориулсан SMTP тохиргоо
- Вэб сайтын имэйл: rambler.ru дахь шуудангийн хайрцаг, жишээлбэл: [имэйлээр хамгаалагдсан]
- Захидал илгээгч: "Илгээгч" талбарт хүлээн авагчийн харуулах бичилт
PHPMailer бол таны вэбсайтаас имэйл илгээх маш тохиромжтой, түгээмэл номын сан юм. Энэ нийтлэл нь номын сангийн үндсэн тохиргоог тайлбарлаж, мессеж илгээх кодын жишээг өгдөг. PHPMailer нь таны шуудантай ажиллахаас хүссэн бүх зүйлтэй байж магадгүй: илгээх янз бүрийн аргаар, янз бүрийн серверүүд, түүний дотор smtp-ээр дамжуулан захидалаа спам болон бусад зүйлд оруулахгүйн тулд шифрлэх, гарын үсэг зурах боломжтой.
Та PHPMailer номын санг https://github.com/PHPMailer/PHPMailer-аас татаж авах боломжтой ("Clone or download" товчлуур).
Эхлээд би хосыг харъя энгийн жишээнүүд PHPMailer ашиглан хэрхэн имэйл илгээхийг тодорхой болгох.
PHPMailer ашиглан mail() функцээр имэйл илгээх
Хэрэв та өөрийн хостингоос имэйл илгээхийг хүсвэл өөрийн шуудангийн сервер, тэгвэл бүх зүйл маш энгийн бөгөөд иймэрхүү харагдах болно:
// PHPMailer номын санд PHPMailer\PHPMailer\PHPMailer ашиглах; "PHPMailer/PHPMailer.php" шаардлагатай; // үсэг үүсгэх $мэйл = new PHPMailer(); $mail->setFrom(" [имэйлээр хамгаалагдсан]", "Иван Иванов"); // хэнээс (имэйл болон нэр) $мэйл->addAddress(" [имэйлээр хамгаалагдсан]", "Вася Петров"); // хэнд (и-мэйл, нэр) $мэйл->Сэдэв = "Тест"; // захидлын сэдэв // html текстүсэг $мэйл->msgHTML("
Сайн байна уу!
Энэ бол туршилтын захидал юм.
"); // Илгээх if ($mail->send()) ( echo "Message илгээгдсэн!"; ) else ( echo "Алдаа: " . $mail->ErrorInfo; )Таны харж байгаагаар бүх зүйл маш энгийн: бид номын санг холбож, хэнээс, хэнд, захидлын сэдэв, текстийг бөглөж, илгээдэг. Ийм маягаар имэйл илгээх нь зөвхөн таны домэйн дэх имэйл хаягуудаас ажиллах болно (бусад захидлуудтай холбогдоогүй тохиолдолд).
Yandex болон Google-ийн жишээн дээр PHPMailer ашиглан SMTP-ээр имэйл илгээх
Та мөн өөр шуудангаар, жишээлбэл, дамжуулан захидал илгээж болно Yandex. Код нь иймэрхүү харагдах болно:
// PHPMailer номын санд PHPMailer\PHPMailer\PHPMailer ашиглах; PHPMailer\PHPMailer\SMTP ашиглах; "PHPMailer/PHPMailer.php" шаардлагатай; "PHPMailer/SMTP.php" шаардлагатай; // үсэг үүсгэх $мэйл = new PHPMailer(); $мэйл->isSMTP(); // SMTP-ээр илгээх $mail->Host = "smtp.yandex.ru"; // SMTP серверийн хаяг $mail->SMTPauth = үнэн; // SMTP нэвтрэлт танилтыг идэвхжүүлэх $mail->Хэрэглэгчийн нэр = "нэвтрэх"; // таны хэрэглэгчийн нэр (домэйн болон @ байхгүй) $mail->Нууц үг = "нууц үг"; // таны нууц үг $mail->SMTPSecure = "ssl"; // ssl шифрлэлт $mail->Port = 465; // холболтын порт $mail->setFrom(" [имэйлээр хамгаалагдсан]", "Иван Иванов"); // хэнээс $мэйл->addAddress(" [имэйлээр хамгаалагдсан]", "Вася Петров"); // хэнд $mail->Subject = "Тест"; $mail->msgHTML("
Сайн байна уу!
Энэ бол туршилтын захидал юм.
"); // Илгээх if ($mail->send()) ( echo "Message илгээгдсэн!"; ) else ( echo "Алдаа: " . $mail->ErrorInfo; )Google-ээр дамжуулан имэйл илгээхнэг анхааруулга байна: танд хэрэгтэй google бүртгэл найдваргүй програмуудад хандахыг зөвшөөрөх. Үүнийг хийхийн тулд та https://myaccount.google.com акаунт руугаа орж, аюулгүй байдал руу орж, "Таны бүртгэлд хандах боломжтой итгэмжгүй програмууд" хэсэгт очоод "Зөвшөөрөгдсөн" рүү шилжих хэрэгтэй. Үүнийг бичиж байх үед энэ хуудас нь https://myaccount.google.com/u/0/lesssecureapps байна.
$mail->Host = "smtp.gmail.com"; // SMTP серверийн хаяг $mail->SMTPauth = үнэн; // SMTP нэвтрэлт танилтыг идэвхжүүлэх $mail->Хэрэглэгчийн нэр = "нэвтрэх"; // таны хэрэглэгчийн нэр $мэйл->Нууц үг = "нууц үг"; // таны нууц үг $mail->SMTPSecure = "ssl"; // ssl шифрлэлт $mail->Port = 465; // холболтын порт
Хэрэв та анх удаа smtp-ээр илгээх програмыг ажиллуулж байгаа бол илгээхээсээ өмнө нэмэлт ашиглахыг зөвлөж байна. $мэйл->SMTPDebug = 1;үйлчлүүлэгч болон smtp серверээс бүх мессежийг хүлээн авах, i.e. Холболт, зөвшөөрөл гэх мэт бүх үйл явц дэлгэцэн дээр гарч ирэх бөгөөд энэ нь таны програмыг дибаг хийхэд маш хэрэгтэй болно.
PHPMailer ашиглан хавсралт бүхий имэйл илгээж байна
Энд бүх зүйл маш энгийн, та зөвхөн аргыг ашиглах хэрэгтэй хавсралт нэмэх. Би жишээ хэлье, үүний зэрэгцээ хэд хэдэн зүйлийг харуулах болно нэмэлт функцууд:
// PHPMailer номын санд PHPMailer\PHPMailer\PHPMailer ашиглах; PHPMailer\PHPMailer\Exception ашиглах; "PHPMailer/PHPMailer.php" шаардлагатай; "PHPMailer/Exception.php" шаардлагатай; // үсэг үүсгэх $мэйл = шинэ PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [имэйлээр хамгаалагдсан]", "Иван Иванов"); // хэнээс $mail->addReplyTo(" [имэйлээр хамгаалагдсан]", "Иван Иванов"); // буцах хаяг $мэйл->addAddress(" [имэйлээр хамгаалагдсан]", "Вася Петров"); // хэнд $мэйл->Сэдэв = "Туршилт"; // сэдэв $мэйл->msgHTML(file_get_contents("contents.html"), __DIR__); // "бие"-г авах файлын захидлын $mail->AltBody = "Энгийн бичвэр захидал" // хэрэв үйлчлүүлэгч html $mail->addAttachment("my_file.txt" // нэг файлыг хавсаргана); >addAttachment("phpmailer) .jpg"); // хоёр дахь файлыг хавсаргах // Илгээх ($mail->send()) ( echo "Message илгээгдсэн!"; ) else ( echo "Алдаа: " . $mail- >Алдааны мэдээлэл;
Та addAddress ашиглан олон хүлээн авагчийн хаяг нэмж болно. Эсвэл шаардлагатай бол та эсрэгээр энэ аргыг ашиглан бүх хүлээн авагчийн хаягийг устгаж болно тодорхой хаяг(). Та бүх хавсралтыг ашиглан устгаж болно clearAttachments().
Та бас ашиглаж болно AddEmbeddedImage html кодонд ашиглахад зориулагдсан бөгөөд татаж авах боломжгүй хавсралт (ихэвчлэн зураг) нэмэх. Татаж авах боломжгүй захидал дахь зургийг ашиглах жишээ:
// PHPMailer номын санд PHPMailer\PHPMailer\PHPMailer ашиглах; "PHPMailer/PHPMailer.php" шаардлагатай; //Захидал үүсгэх $мэйл = шинэ PHPMailer; $мэйл->IsHTML(үнэн); $mail->setFrom(" [имэйлээр хамгаалагдсан]", "Иван Иванов"); $мэйл->addAddress(" [имэйлээр хамгаалагдсан]", "Вася Петров"); $mail->Subject = "Тест"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "
HTML код дээрх зураг
"; // $мэйл илгээх->send();Тиймээс та илгээж болно зураг бүхий үсэг, эдгээр нь зөвхөн захидлын үндсэн хэсэгт байгаа боловч хавсралт болгон татаж авах боломжгүй. Эдгээр зургийг захидлын html кодын хаана ч ашиглаж болно, та url хаягийн оронд AddEmbeddedImage-д ашигласан зургийн cid-ийг зааж өгөхөд л хангалттай.
PHPMailer-ээр гарын үсэг зурсан, шифрлэгдсэн имэйл илгээх
Анхдагч байдлаар, PHPMailer нь илгээсэн бүх мессежийг шифрлэдэг. Та дараах кодыг ашиглан SMTP-ээр имэйл илгээх үед л цахим шуудангийн шифрлэлтийг идэвхгүй болгож болно.
$mail->SMTPSecure = худал; $mail->SMTPAutoTLS = худал;
руу DKIM гарын үсгээр захидалд гарын үсэг зурна уу, та хэд хэдэн алхам хийх хэрэгтэй:
- Өөрийн домэйны хувийн болон нийтийн түлхүүрүүдийг үүсгэнэ үү
- Нийтийн түлхүүр бүхий TXT домэйны DNS бичлэгийг нэмнэ үү
- Имэйл илгээхээсээ өмнө PHPMailer дээр DKIM гарын үсгийг тохируулна уу
Одоо би алхам бүрийг бага зэрэг нарийвчлан тайлбарлах болно.
Хувийн болон нийтийн түлхүүрүүдийг үүсгэх
Хэрэв танд Линукс хостинг байгаа бөгөөд Shell-д хандах боломжтой бол гол файлуудыг үүсгэх нь лийрийг устгахтай адил хялбар бөгөөд та ердийн хэрэглэгчийн эрхээр 2 тушаалыг ажиллуулахад л хангалттай.
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
тус тус, test-private.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, ]); openssl_pkey_export_to_file, $pkey_file($pkey_get); _дэлгэрэнгүй($pk $publickey = $pubKey["key"] file_put_contents($publickeyfile, $publickey = file_get_contents);
Хувийн түлхүүр (үүнийг нууцлах!):
". $privatekey.""; цуурай "
Нийтийн түлхүүр:
" . $publickey ."";
Анхаар!Файлуудыг хадгалах хавтас бичих боломжтой эсэхийг бүү мартаарай.
Нийтийн түлхүүрээр DNS бичлэг нэмж байна
Таны захидлыг хүлээн авах захидлын серверүүд таны домэйны DNS бичлэгийг уншиж захидал дээрх гарын үсгийг баталгаажуулахын тулд DNS бүртгэл шаардлагатай. Ер нь, та өөрийн домэйн хяналтын самбар эсвэл хостинг хянах самбартаа DNS бичлэг нэмж болно. Хэрэв та оруулгыг хэрхэн нэмэхээ мэдэхгүй байгаа бол хостинг үйлчилгээ үзүүлэгчийнхээ дэмжлэгтэй холбоо барина уу.
Та дараах байдлаар DNS бичлэг нэмэх хэрэгтэй:
Оруулсан нэр: mail._domainkey.test.ru. (Төгсгөлд нь "." цэг байна)
TTL: 3600 (эсвэл аль нь өгөгдмөл байх болно)
Нийтлэлийн төрөл: TXT
Утга: v=DKIM1; h=sha256; t=s; p=ТАНЫ_НИЙТИЙН_ТҮЛХҮҮР
Оруулсан нэр дээр test.ruөөрийн домэйн нэрээр солигдох ёстой. Та "НИЙТИЙН_НИЙТИЙН_ТҮЛХҮҮР" гэсэн үгийг "Нийтийн түлхүүр"-ийн дараа өмнөх алхамд хүлээн авсан текстээр "-----ЭХЭЛЛЭХ НИЙТИЙН ТҮЛХҮҮР-----" болон "-----НИЙТИЙН_ТҮЛХҮҮР-ийг дуусгах"гүйгээр солино. -- --", зөвхөн түлхүүр нь өөрөө. Энэ тохиолдолд бүх гол мөрүүд шаардлагатай нэг урт мөрөнд нэгтгэхИнгэснээр мөр тасрахгүй.
PHPMailer дээр DKIM гарын үсгийг тохируулж, имэйл илгээж байна
Захиа илгээхээсээ өмнө PHPMailer програмын цөөн хэдэн тохиргоог хийх л үлдлээ. Дараах жишээ бүх зүйлийг тодорхой болгоно гэж би бодож байна.
// Номын сангийн хэрэглээг PHPMailer\PHPMailer\PHPMailer оруулах; "PHPMailer/PHPMailer.php" шаардлагатай; // үсэг үүсгэх $мэйл = шинэ PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [имэйлээр хамгаалагдсан]"); $мэйл->addAddress(" [имэйлээр хамгаалагдсан]"); $mail->Subject = "Энэ бол туршилт"; $mail->msgHTML("
Энэ бол шалгалт юм
"); // DKIM гарын үсгийг тохируулах $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "мэйл"; // $ илгээх шуудан->илгээх();Мэдээжийн хэрэг test.ruта өөрийн домэйн нэрээ өөрчлөх ёстой, мөн test-private.pemТүлхүүр үүсгэх үе шатанд үүсгэсэн хувийн түлхүүр файлын бүтэн зам болон нэр.
Одоо таны PHPMailer-ээр илгээсэн имэйлүүд таны хувийн түлхүүрээр DKIM гарын үсэг зурсан байх болно.
2019-08-05
Сайн байна уу, эрхэм зочин!
Блогоо шинэчлээд удаашсанд уучлаарай. Гэхдээ үүнд бүрэн ойлгомжтой тайлбар бий. Эцсийн эцэст, зун, зуслангийн байшин, зочид, ой мод, ус болон бусад олон зүйл нь вэбсайт үүсгэх асуудлыг шийдвэрлэх боломжийг надад олгосонгүй. Гэхдээ одоо би бага зэрэг чөлөөлөгдсөн, зочид явсан, одоо би үүнд анхаарлаа хандуулах болно гэж бодож байна.
Тиймээс, сүүлийн нийтлэлд бид домэйныхоо имэйлийг шуудангийн үйлчилгээнүүдийн аль нэгэнд холбосоны дараа та сайтаас хэрхэн имэйл илгээх боломжтойг харцгаая. Түүгээр ч барахгүй, бидний захидал СПАМ-д ордоггүй, харин найдвартай, өндөр магадлалтайгаар хүлээн авагчдад хүргэдэг.
Ерөнхийдөө PHP дээр захидал илгээх зориулалттай mail() функц байдаг. Гэхдээ энэ аргын энгийн байдлаас үл хамааран (энэ тохиолдолд захидал илгээхийн тулд тодорхой параметр бүхий нэг мөр кодыг зааж өгөхөд хангалттай) энэ сонголтыг ашиглах нь SPAM-ийн асуудалтай холбоотой мэдэгдэхүйц сул талтай гэдгийг тэмдэглэх нь зүйтэй. .
Баримт нь хүлээн авагчийн талын мэйл серверүүдийн СПАМ-ын эсрэг шүүлтүүрүүд нь mail() функцээр дамжуулан илгээсэн захидалд үнэхээр таалагддаггүй. Ихэнх тохиолдолд ийм мессежийг хүлээн авагчид хүрэхээс өмнө шүүж эсвэл бүр устгадаг.
Ийм тохиолдлыг аль болох арилгахын тулд гуравдагч этгээдийн шуудангийн үйлчилгээ хийсэн мэт захидал илгээдэг өөр сонголтыг ихэвчлэн ашигладаг.
Энэ аргыг SMTP-ээр зөвшөөрөлтэй захидал илгээх гэж нэрлэдэг. Үүнийг бид өнөөдөр санал хүсэлт илгээх жишээн дээр авч үзэх болно. Нэмж дурдахад бид SMTP-ээр захидал илгээхийг маш энгийнээр зохион байгуулах боломжийг олгодог нэлээд алдартай, алдартай PHPMailer номын санг ашиглах болно.
- Бид санал хүсэлтээ хэрхэн илгээх вэ
- Санал хүсэлтийн маягт үүсгэх
- PHPMailer номын санг суулгаж байна
- Бид SMTP-ээр захидал илгээх скрипт үүсгэдэг
- Имэйл илгээхийг шалгаж байна
- Эх файлуудсайт
Бид санал хүсэлтээ хэрхэн илгээх вэ
Эхлэхээсээ өмнө практик ажилСанал хүсэлтийн захидал илгээсний дараа бид эхлээд үүнийг хэрхэн хийхээ шийдэх болно.
Санал хүсэлтийн маягт нь хэрэглэгчийг сайтын админтай холбоо барьж, мессежээ дамжуулах боломжийг олгох зорилготой юм. Ихэвчлэн энэ маягт нь хэд хэдэн талбар болон "Илгээх" товчоос бүрдэнэ.
Зарчмын хувьд имэйл илгээхийн тулд хэрэглэгч болон мессежийн агуулгын талаар хангалттай мэдээлэл өгөх цөөн хэдэн талбарыг ашиглахад хангалттай, тухайлбал:
- "Нэр" - мессеж илгээгчийн нэрийг оруулах;
- "И-мэйл" - илгээгчийн имэйл хаягийн хувьд;
- "Мессежийн сэдэв";
- "Зурвасны текст".
Хэдийгээр та бусдыг нэмж болно. Жишээлбэл, хэрэв энэ нь үнэхээр шаардлагатай бол утасны дугаар.
Манай тохиолдолд ийм захидал нь манай домэйн холбогдсон шуудангийн үйлчилгээний зөвшөөрөлтэй жинхэнэ шуудангийн хайрцгаас сайтын администраторын хаяг руу илгээгдэх болно.
Өмнөх нийтлэлд бид Yandex.Mail үйлчилгээнд домэйн шуудангийн холболтыг шалгахад анхаарлаа хандуулсан тул бид энэ сонголтоор имэйл илгээх болно. Хэдийгээр энэ нь чухал биш юм. Доор та өөрчилсөн тохиолдолд Mail.ru мэйл серверээр дамжуулан имэйл илгээх боломжтой сонголтуудыг харах болно.
Захидал илгээх жинхэнэ шуудангийн хайрцгийн хувьд бид шинээр үүсгэсэн домэйн хэрэглэгчийн бүртгэлийг хаягаар нь хэлнэ. [имэйлээр хамгаалагдсан]. Мөн бид эдгээр захидлыг администраторын шуудангийн хайрцаг руу илгээх болно [имэйлээр хамгаалагдсан], бид өмнө нь өмнөх нийтлэлд бий болгосон.
Тиймээс санал хүсэлтийн маягтаас захидал илгээгч нь шуудангийн хайрцаг байх болно [имэйлээр хамгаалагдсан]., мөн хүлээн авагч - [имэйлээр хамгаалагдсан]. Энэ тохиолдолд мессежийг агуулгын хамт илгээсэн хэрэглэгчийн талаарх бүх мэдээллийг илгээсэн захидлын үндсэн хэсэгт дамжуулах болно.
Санал хүсэлтийн маягт үүсгэх
Бид захидал илгээх журмыг шийдсэний дараа бид үүнийг хийх санал хүсэлтийн маягтыг үүсгэх болно.
Доорх нь энэ маягтын HTML кодыг бид "Харилцагч" хуудсанд байрлуулах болно (нийтлэлүүдийн лавлах дахь kontakty.php файл).