Php Yandex smtp-ээр захидал илгээж байна. Дотоод серверээс SMTP-ээр захидал илгээж байна

Гэр / Програмуудыг суулгаж байна

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 гарын үсэг зурсан байх болно.

Тодорхой вэбсайтыг үр дүнтэй, үр бүтээлтэй ажиллах боломжийг олгохын тулд түүнийг бүтээхэд аль болох хариуцлагатай, анхааралтай хандах хэрэгтэй. Онлайн дэлгүүрийг бий болгоход ашиглах системийг сонгоход онцгой анхаарал хандуулах хэрэгтэй. Бараа, үйлчилгээ борлуулах чиглэлээр мэргэшсэн арилжааны платформ нь шаардлагатай бүх функцийг хэрэгжүүлэх боломжийг олгож, сайтыг хадгалах, бөглөх ажилд оролцдог админууд болон онлайн дэлгүүрийн үйлчлүүлэгчдэд ашиглахад хялбар байх ёстой. Өөртөө тохирох CMS сонгох асуудалтай тулгарсан олон хүмүүс, компаниуд Magento эсвэл OkayCMS-ийг сонгох эсэхээ шинжилдэг. Эдгээр вэб сайтын хөдөлгүүрүүдийн онцлог, чадавхийг харьцуулж үзье.

Өөрийн вэбсайт дээр ажиллахдаа хүн эсвэл компани маш их хүчин чармайлт гаргах шаардлагатай болно - зөвхөн энэ тохиолдолд та найдаж болно. эерэг үр дүнмөн үнэхээр үр дүнтэй хэрэгсэл олж авах. Вэбсайт үүсгэж эхлэхээс өмнө шийдвэрлэх ёстой үндсэн асуултуудын нэг бол хамгийн тохиромжтой CMS сонголтыг хэрхэн шийдэх вэ? Дараа нь бид хоёр CMS: Joomla эсвэл OkayCMS-ийг харьцуулж, тэдгээрийн онцлог шинж чанаруудыг анхаарч үзэх болно.

Өөрийн вэбсайттай байх нь үр дүнтэй, амжилттай бизнес эрхлэх үндсэн шаардлагуудын нэг юм. Интернэтээр дамжуулан төрөл бүрийн бараа бүтээгдэхүүн худалдан авах, үйлчилгээний захиалгын тоо нэмэгдэж байгааг статистик тоо тодорхой харуулж байна. Үүнийг харгалзан үзэхэд ихэнх арилжааны компаниуд өөрсдийн вэбсайттай байх шаардлагатайг аль хэдийн мэддэг болсон. Гэсэн хэдий ч Интернет нөөцтэй байх нь түүний үр ашиг, ашиг орлого, бизнесийн хүлээгдэж буй ашиг тусыг тооцоход хангалтгүй юм.

Өөрийн вэбсайт үүсгэх эсвэл онлайн дэлгүүр нээхэд бэлтгэхдээ олон асуудлыг анхаарч үзэх, дүн шинжилгээ хийх, түүнчлэн янз бүрийн асуудлыг шийдвэрлэх шаардлагатай. Зөвхөн энэ тохиолдолд таны төсөл эерэг үр дүнд хүрч, таны хүлээлтийг бүрэн хангаж чадна гэдэгт найдаж болно. Онлайн дэлгүүрийг хөгжүүлэхтэй холбоотой янз бүрийн асуудлуудын дунд CMS-ийг сонгох асуудал онцгой анхаарал хандуулах ёстой. Өөртөө оновчтой хөдөлгүүрийг сонгоход хялбар болгохын тулд дотроос

Ирээдүйн онлайн дэлгүүрт зориулж өөрийн вэбсайтыг бий болгохоор төлөвлөж байхдаа маш олон тооны хүмүүс, тэр ч байтугай борлуулалтаар мэргэшсэн компаниуд одоо байгаа CMS-ийн алийг нь сонгох вэ гэдэг хэцүү бөгөөд маш чухал сонголттой тулгардаг. Хэрэв та юу сонгохоо бодож байгаа бол: PrestaShop эсвэл OkayCMS, бид танд энэ нийтлэлийг уншихыг санал болгож байна, үүнд бид интернет сайтууд, ялангуяа онлайн дэлгүүрүүд үүсгэх эдгээр хоёр системийг харьцуулах болно.

2019-08-05

Сайн байна уу, эрхэм зочин!

Блогоо шинэчлээд удаашсанд уучлаарай. Гэхдээ үүнд бүрэн ойлгомжтой тайлбар бий. Эцсийн эцэст, зун, зуслангийн байшин, зочид, ой мод, ус болон бусад олон зүйл нь вэбсайт үүсгэх асуудлыг шийдвэрлэх боломжийг надад олгосонгүй. Гэхдээ одоо би бага зэрэг чөлөөлөгдсөн, зочид явсан, одоо би үүнд анхаарлаа хандуулах болно гэж бодож байна.

Тиймээс, сүүлийн нийтлэлд бид домэйныхоо имэйлийг шуудангийн үйлчилгээнүүдийн аль нэгэнд холбосоны дараа та сайтаас хэрхэн имэйл илгээх боломжтойг харцгаая. Түүгээр ч барахгүй, бидний захидал СПАМ-д ордоггүй, харин найдвартай, өндөр магадлалтайгаар хүлээн авагчдад хүргэдэг.

Ерөнхийдөө PHP дээр захидал илгээх зориулалттай mail() функц байдаг. Гэхдээ энэ аргын энгийн байдлаас үл хамааран (энэ тохиолдолд захидал илгээхийн тулд тодорхой параметр бүхий нэг мөр кодыг зааж өгөхөд хангалттай) энэ сонголтыг ашиглах нь SPAM-ийн асуудалтай холбоотой мэдэгдэхүйц сул талтай гэдгийг тэмдэглэх нь зүйтэй. .

Баримт нь хүлээн авагчийн талын мэйл серверүүдийн СПАМ-ын эсрэг шүүлтүүрүүд нь mail() функцээр дамжуулан илгээсэн захидалд үнэхээр таалагддаггүй. Ихэнх тохиолдолд ийм мессежийг хүлээн авагчид хүрэхээс өмнө шүүж эсвэл бүр устгадаг.

Ийм тохиолдлыг аль болох арилгахын тулд гуравдагч этгээдийн шуудангийн үйлчилгээ хийсэн мэт захидал илгээдэг өөр сонголтыг ихэвчлэн ашигладаг.

Энэ аргыг SMTP-ээр зөвшөөрөлтэй захидал илгээх гэж нэрлэдэг. Үүнийг бид өнөөдөр маягт илгээх жишээн дээр авч үзэх болно санал хүсэлт. Нэмж дурдахад бид SMTP-ээр захидал илгээхийг маш энгийнээр зохион байгуулах боломжийг олгодог нэлээд алдартай, алдартай PHPMailer номын санг ашиглах болно.

  • Бид санал хүсэлтээ хэрхэн илгээх вэ
  • Санал хүсэлтийн маягт үүсгэх
  • PHPMailer номын санг суулгаж байна
  • Бид SMTP-ээр захидал илгээх скрипт үүсгэдэг
  • Имэйл илгээхийг шалгаж байна
  • Эх файлуудсайт

Бид санал хүсэлтээ хэрхэн илгээх вэ

Эхлэхээсээ өмнө практик ажилСанал хүсэлтийн захидал илгээсний дараа бид эхлээд үүнийг хэрхэн хийхээ шийдэх болно.

Санал хүсэлтийн маягт нь хэрэглэгчийг сайтын админтай холбоо барьж, мессежээ дамжуулах боломжийг олгох зорилготой юм. Ихэвчлэн энэ маягт нь хэд хэдэн талбар болон "Илгээх" товчоос бүрдэнэ.

Зарчмын хувьд имэйл илгээхийн тулд хэрэглэгч болон мессежийн агуулгын талаар хангалттай мэдээлэл өгөх цөөн хэдэн талбарыг ашиглахад хангалттай, тухайлбал:

  • "Нэр" - мессеж илгээгчийн нэрийг оруулах;
  • "И-мэйл" - хаягийн хувьд имэйлилгээгч;
  • "Мессежийн сэдэв";
  • "Зурвасны текст".

Хэдийгээр та бусдыг нэмж болно. Жишээлбэл, хэрэв энэ нь үнэхээр шаардлагатай бол утасны дугаар.

Манай тохиолдолд ийм захидал нь манай домэйн холбогдсон шуудангийн үйлчилгээний зөвшөөрөлтэй жинхэнэ шуудангийн хайрцгаас сайтын администраторын хаяг руу илгээгдэх болно.

Өмнөх нийтлэлд бид 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 хавтсыг бүх агуулгатай нь сайтын үндсэн хэсэгт байрлуулах ёстой. Үүний зэрэгцээ, хялбар болгох үүднээс та үүнийг PHPMailer гэж нэрлэж болно. Сайтын үндсэн директорт байрлуулсан PHPMailer хавтасны агуулгыг доор харуулав.

Тиймээс бид PHPMailer номын санг суулгасан. Үүний дараа бид вэбсайтаасаа имэйл илгээх скрипт үүсгэж эхлэх боломжтой.

Бид SMTP-ээр захидал илгээх скрипт үүсгэдэг

Скриптийг бичихийн тулд GitHub хуудсан дээр өгөгдсөн PHPMailer ашиглах зөвлөмжийг ашиглахад хангалттай бөгөөд бидний өмнө нь номын санг татаж авахад ашигладаг байсан.

Тэд ялангуяа скриптийн эхэнд PHPMailer ангиудыг дэлхийн нэрийн орон зайд импортлох шаардлагатайг харуулж байна. Мөн холбогдох кодын тодорхой мөрүүдийг өгсөн болно. Мөн PHPMailer-ийн шинж чанар, аргуудыг ашиглах жишээнүүд байдаг, үүнд SMTP-ээр захидал илгээх боломжтой.

Гэхдээ энэ нь хангалтгүй бол та энэ номын сангийн бүх шинж чанар, аргуудын тайлбарыг агуулсан баримт бичгийг ашиглаж болно.

дэлгэцийн зураг 74

Зөвшөөрөлтэй SMTP-ээр дамжуулан санал хүсэлтийн маягтаас захидал илгээх скрипт кодыг доор харуулав. PHPMailer-тай холбоотой бүх мөрүүдийг тайлбарлаж, цайвар дэвсгэрээр тодруулсан байна.

Бусад процессоруудад өмнө нь ашиглах ёстой байсан маягтаас өгөгдөл хүлээн авах, боловсруулахтай холбоотой хэсгүүдийг багтаасан үлдсэн хэсгийг бараан дэвсгэрээр тэмдэглэв. Тэдгээрийн талаар өмнө нь PHP дахь маягтаас өгөгдөл олж авах, шалгах асуудалд тусгайлан зориулсан нийтлэлд дэлгэрэнгүй авч үзсэн. Мөн бид маягтын өгөгдлийг баталгаажуулах, боловсруулах бүх нийтийн хэрэглэгчийн функцийн талаар ярилцсан шалгах_тэмдэг().

Бид энэ скриптийг өмнө нь санал хүсэлтийн маягтыг үүсгэсэн kontakty.php файлд байрлуулах болно.

    //----PHPMailer ашиглан SMTP-ээр захидал илгээх скрипт----

    //Глобал нэрийн орон зайд PHPMailer классуудыг импортлох. Тэд функц дотор биш скриптийн дээд талд байх ёстой

    ашиглах PHPMailer\PHPMailer\PHPMailer;

    ашиглах PHPMailer\PHPMailer\Exception;

    хэрэв (!хоосон($_POST["холбоо барих товч" ])) (

    $name = $_POST["холбоо барих нэр" ];

    $name = check_symbol ($нэр, "Нэр" , "1" , "/^+\z/iu");

    $email = $_POST["холбоо барих имэйл" ];

    $email = check_symbol ($имэйл, "И-мэйл" , "1" , "/^+@(+\.)+(2,6)\z/i");

    $сэдэв = $_POST["холбоо барих сэдэв" ];

    $сэдэв = шалгах_тэмдэг ($сэдэв, "Зурвасны сэдэв" , "1" , "0" );

    $сэтгэгдэл = $_POST["холбоо барих-коммент" ];

    $ тайлбар = шалгах_тэмдэг ($ тайлбар, "Мессежийн текст", "1" , "0" );

    хэрэв (!хоосон($GLOBALS["сэрэмжлүүлэг" ])) (

    $ анхааруулга = "Маягтын өгөгдлийг илгээгээгүй. Дараах алдаа олдсон:\n".$ дохиолол;

    оруулах"alert.php" ;

    өөр {

    //Номын санг холбож байна

    шаарддаг"PHPMailer/src/PHPMailer.php" ;

    шаарддаг"PHPMailer/src/Exception.php" ;

    шаарддаг"PHPMailer/src/SMTP.php" ;

    $мэйл = шинэ PHPMailer(); //Ангийг эхлүүлэх

    $-аас = " [имэйлээр хамгаалагдсан]" ; //Захидал илгээсэн имэйл хаяг

    $to = " [имэйлээр хамгаалагдсан]" ; //Хүлээн авагчийн хаяг

    $мэйл -> isSMTP(); //SMTP протокол ашиглах

    $мэйл -> Хост = "smtp.yandex.ru" ; //Мэйл серверийн хаяг

    $мэйл -> SMTPAuth = үнэн ; // Зөвшөөрлийн горимыг идэвхжүүлнэ

    $мэйл -> Хэрэглэгчийн нэр = " [имэйлээр хамгаалагдсан]" ; //Гуравдагч талын цахим шуудангийн үйлчилгээнд холбогдсон домэйн имэйлээс нэвтрэх (энэ тохиолдолд Yandex.Mail)

    $мэйл -> Нууц үг = "27MrDon89" ; //Домэйн шуудангийн нууц үг

    $мэйл -> SMTPSecure = "ssl" ; //Шифрлэлтийн протокол

    $мэйл -> Порт = "465" ; //SMTP серверийн порт

    $mail -> CharSet = "UTF-8" ; // Кодлох

    $мэйл -> setFrom ($from, "Администратор" ); // Илгээгчийн хаяг, нэр

    $мэйл -> хаяг нэмэх ($-д, "Администратор"); //Хүлээн авагчийн хаяг, нэр

    $мэйл -> isHTML ( үнэн ); //Имэйл форматыг HTML болгож тохируулна уу

    $мэйл -> Гарчиг = "Санал хүсэлтийн маягтыг илгээсэн"; // Имэйлийн сэдэв (гарчиг)

    $мэйл -> Их бие = "

    Илгээгчийн нэр: $ нэр

    Илгээгчийн хаяг: $мэйл

    Мессежийн сэдэв: $сэдэв

    Мессежийн агуулга: $ сэтгэгдэл

    " ; // Мессежийн агуулга

    $мэйл -> AltBody = "Өөр үсэг текст"; //Эмэйл клиент HTML форматыг дэмждэггүй бол өөр имэйл

    $мэйл -> SMTPDebug = 0; //SMTP дибаг хийхийг идэвхжүүлэх: 0 - унтраалттай (ердийн хэрэглээнд), 1 = үйлчлүүлэгчийн мессежүүд, 2 - үйлчлүүлэгч болон серверийн мессежүүд

    хэрэв($мэйл -> илгээх()) (

    $ анхааруулга = "Зурвас илгээсэн"; //Захиаг амжилттай илгээсэн тухай хөтчийн харилцах цонхонд мессеж гарга

    өөр {

    $ анхааруулга = "Алдаа, имэйл илгээх боломжгүй:".$мэйл -> ErrorInfo ; //Алдааны мэдэгдэл гарга

    оруулах"alert.php" ;

Зураг.5 Зөвшөөрөлтэй SMTP-ээр имэйл илгээх скрипт

Таны харж байгаагаар имэйл мессеж илгээхтэй шууд холбоотой бүх мөрөнд шаардлагатай арга, шинж чанарыг зааж өгсөн тайлбарыг хавсаргасан болно. Тиймээс бид өөрсдийгөө давтах нь утгагүй юм, гэхдээ бид зөвхөн тэдгээрийн заримыг нь авч үзэх боломжтой бөгөөд энэ нь үнэхээр нэмэлт тайлбар шаарддаг, тухайлбал:

1. Захидал нь гуравдагч этгээдийн шуудангийн үйлчилгээнээс илгээгдсэн тул тодорхой SMTP серверт тохирох тохиргоог энд оруулсан болно. Энэ тохиолдолд Yandex.Mail серверийг ашиглах тохиолдолд дараах өмчийн утгыг хэрэглэнэ.

  • Өмч Хөтлөгч(pos.28) - smtp.yandex.ru утгатай шуудангийн серверийн хаяг;
  • Өмч SMTPSecure
  • Өмч Порт

Эдгээр өмчийн утгыг дараах дэлгэцийн агшинд харуулсан Yandex.Тусламжийн хуудаснаас авсан болно.

Гэхдээ ийм мэдээллийг бусад эх сурвалжаас авах боломжтой. Үүнийг хийхийн тулд хайлтын системд тохирох асуулгыг оруулна уу, жишээлбэл: "Yandex smtp сервер". Энэ асуудлын талаархи олон тооны лавлагааг хаанаас олж болох вэ.

Үүнтэй адилаар тохиргооны утгыг бусад SMTP серверүүдээс авах боломжтой. Mail.ru мэйл үйлчилгээний SMTP серверийн тохиргоог харуулсан Mail.ru тусламжийн хуудасны дэлгэцийн агшинг доор харуулав.

Тиймээс, Mail.ru-г гуравдагч этгээдийн SMTP сервер болгон ашиглах тохиолдолд PHPMailer ангиллын шинж чанаруудын дараах утгыг хэрэглэнэ.

  • Өмч Хөтлөгч(pos.28) - Мэйл серверийн хаяг (smtp.mail.ru);
  • Өмч SMTPSecure(pos.32) - Шифрлэлтийн протокол (ssl);
  • Өмч Порт(33 дугаар байр) - SMTP серверийн порт (465).

Үүнтэй төстэй аргыг бусад цахим шуудангийн үйлчилгээнд ашиглах ёстой.

2. Эд хөрөнгөнд Хэрэглэгчийн нэр(30 дугаар байр) домэйны шуудангийн хайрцгийн бүрэн хаягийг зааж өгөх шаардлагатай. Энэ тохиолдолд " [имэйлээр хамгаалагдсан]".

Гэсэн хэдий ч, хэрэв та захидал илгээхдээ домэйн мэйл данснаас өөр хаяг ашигладаг бол шуудангийн үйлчилгээтэй шууд холбоотой хаяг, жишээ нь " [имэйлээр хамгаалагдсан]", дараа нь нэвтрэх нь зөвхөн "@" тэмдэг хүртэлх хаягийн хэсэг байх ёстой. Энэ тохиолдолд нэвтрэх нь "санал хүсэлт" гэсэн утгатай байх болно.

3. PHPMailer нь өмчийг өгдөг SMTPDebug(pos. 50), энэ нь хөтчийн дэлгэц дээр янз бүрийн түвшний алдааг харуулах боломжийг олгодог. Энэ функц нь скриптийг дибаг хийх үед асуудлыг олоход ихээхэн хялбар болгодог.

Ихэвчлэн хэвийн горимд утгыг 0 болгож тохируулсан үед алдааны дэлгэрэнгүй мэдээллийг гаргах нь идэвхгүй болдог. Хэрэв захидал илгээх эсвэл дибаг хийх явцад асуудал гарвал алдааны талаар илүү ач холбогдолтой мэдээллийг харуулахын тулд бусад утгыг ашиглах боломжтой.

Энэ нь практикт хэрхэн харагдахыг харахын тулд тохиргоонд түр зуур алдаа оруулъя. Жишээлбэл, домэйны шуудангийн нууц үг (property Нууц үг, pos.31). Мөн түүнчлэн үл хөдлөх хөрөнгийн түр хугацаагаар тогтоосон алдааны талаар дэлгэрэнгүй мэдээллийг харуулах SMTPDebug(pos.50) утга 1. Бүх зүйлийг дибаг хийж, шалгасны дараа бид SMTP дибаг хийх горимыг идэвхгүй болгож, 1-ийг 0-ээр солино.

Скриптийн эцсийн хэсэгт шаардлагатай бүх шинж чанар, аргыг зааж өгсний дараа захидал илгээх аргыг ашиглана. илгээх()) (51-р байр). Мөн захидал илгээсэн бол, мөн арга илгээх()объектын хувьд $мэйлүнэн, дараа нь хөтчийн харилцах цонхонд хувьсагчаар дамжуулан буцаана $ сэрэмжлүүлэгАмжилттай захидал илгээсэн тухай мессеж гарч ирнэ (поз 52).

Хэрэв ямар нэг шалтгааны улмаас шуудан илгээх боломжгүй, үүний дагуу арга нь үнэн болж чадахгүй бол энэ төлөвийг харгалзах алдааны мэдэгдэл дагалдуулна (поз 55).

Имэйл илгээхийг шалгаж байна

Бид шуудан илгээх скриптийг үүсгэсний дараа мэдээжийн хэрэг "бүтээлч"-ийн үр дүнг харах хэрэгтэй. Бид энд бүх зүйлийг анхаарч үзсэн үү, ямар ч алдаа гаргаагүй гэж үү?

Үүнийг хийхийн тулд санал хүсэлтийн маягтаас сайтын админ руу хэрэглэгчээс мессеж илгээхийг хичээцгээе. Санал хүсэлтийн маягтыг илгээхээс өмнө бөглөсөн талбаруудын дэлгэцийн агшинг доор харуулав.

Мөн маягтыг илгээсний үр дүн энд байна.

Хөтөчийн харилцах цонхны мессежээс SMTP холболттой холбоотой асуудлаас болж захидал илгээх боломжгүй болох нь тодорхой байна.

Харин одоогоос хойш эд хөрөнгө SMTPDebug(50-р байр) 1-р утгыг өгсөн бол бид гарсан алдааны талаарх дэлгэрэнгүй мэдээллийг харж, түүний үүсэх шалтгааныг олж мэдэх боломжтой.

Дараах дэлгэцийн агшинд холбогдохыг оролдох үед нэвтрэлт танилтын алдаа илэрсэн бөгөөд энэ нь буруу нэвтрэх эсвэл нууц үг ашигласан гэсэн үг юм.

Нууц үгийн таарахгүй байдлыг арилгасны дараа (алдааны талаарх нэмэлт мэдээллийг шалгахын тулд өмнө нь буруу нууц үг ашигласан) бид дахин имэйл илгээхийг оролдох болно.

Энэ удаад бүх зүйл сайхан болсон бололтой, захидал амжилттай илгээгдсэн гэсэн мессеж ирлээ. Домэйн имэйлийн нууц үгэнд зориудаар оруулсан түр зуурын алдааг эс тооцвол бид өөр ямар ч алдаа гаргаагүй бололтой.

Гэхдээ захидал хүлээн авагчид үнэхээр хүргэгдсэн эсэхийг шалгахын тулд хаягтай шуудангаа оруулъя. [имэйлээр хамгаалагдсан]мөн үр дүнг харна уу.

Таны харж байгаагаар хаягаас ирсэн захидал [имэйлээр хамгаалагдсан], үүнээс бид "Санал хүсэлт" нэртэй имэйл мессежийг сайтын админд амжилттай илгээсэн. Үүний зэрэгцээ, захидлын үндсэн хэсэг нь санал хүсэлтийн маягтаас хүлээн авсан өгөгдлийг ашиглан скрипт дээр үүсгэсэн бүх агуулгыг агуулдаг, тухайлбал:

  • Илгээгчийн нэр: Николай;
  • Илгээгчийн хаяг: [имэйлээр хамгаалагдсан];
  • Мессежийн сэдэв: Имэйл илгээхийг шалгаж байна;
  • Мессежийн агуулга: Туршилтын мессеж.

Захиа илгээхийг амжилттай шалгасны дараа та өмчийг зааж өгснөөр SMTP дибаг хийх горимыг идэвхгүй болгож болно. SMTPDebug(поз.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"; // Захидал дахь хавсралт - файлын хаяг $Хавсралт = ""; /* $мэйл = шинэ 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);) // Өөр хүлээн авагч нэмэх $мэйл->addRecipient( " [имэйлээр хамгаалагдсан]"); $мэйл->addRecipient(" [имэйлээр хамгаалагдсан]"); /* $mail->send(From, For, Subject, Text, Subject = заавал биш) */ $SendMail = $mail->send($SenderConfig["SMTP_email"], $Receiver, $Subject, $Text ); // Хүлээн авагчдын жагсаалтыг арилгах $mail->clearBCC(); else ( 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 ашиглан хэрхэн имэйл илгээх вэ?

smtp сервер дээр зөвшөөрлийг дэмждэг дурын PHP анги ашиглах. Жишээлбэл, та PHPMailer ангиллын багцыг ашиглаж болно.

Та мөн зөвшөөрөл шаарддаг smtp сервер ашиглан захидал илгээх манай жишээг ашиглаж болно. Тиймээс скриптэд тохирох хандалтын мэдээллийг нэмэхээ бүү мартаарай, жишээлбэл:

// Хэрэв та SMTP сессийн бүртгэлийг харуулах шаардлагатай бол дараах мөрийн тайлбарыг арилгаж болно. // $_SERVER["дибаг"] = үнэн;функц MailSmtp ($ хүлээн авагч, $ сэдэв, $ агуулга, $ толгой, $ дибаг = 0) ( $ smtp_server = "smtp.site"; // SMTP серверийн хаяг$smtp_port = 25 ; // SMTP серверийн порт$smtp_user = " [имэйлээр хамгаалагдсан]" ; // SMTP сервер дээр зөвшөөрөл авах хэрэглэгчийн нэр$smtp_password = "pAsSwORD" ; // SMTP сервер дээр зөвшөөрөл олгох нууц үг$mail_from = " [имэйлээр хамгаалагдсан]" ; // Захиа илгээсэн шуудангийн хайрцаг$ оймс = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($ оймс, 512);<" . $mail_from . ">if (! $sock ) ( printf ( "Сокет үүсгэгдээгүй\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($ оймс, "AUTH LOGIN"); smtp_msg ($ оймс, base64_encode ($smtp_user)); smtp_msg ($ оймс, base64_encode ($smtp_нууц үг)); smtp_msg ($sock , "MAIL FROM:<" . $reciever . ">" ); smtp_msg ($sock , "DATA" ); $headers = "Гэдэв: " . $сэдэв. "\r\n" . $толгой; $өгөгдөл = $толгой. "\r\n\r\n" $content . "\r\n." "дибаг" ]) && $_SERVER [ "дибаг" ]) ( printf ( "Биднээс илгээх: %s"
" , nl2br (htmlspecialchars ($msg )); ) fputs ($оймс , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ( "Socket is) down\n" ); exit(1); ) else ( if (isset($_SERVER [ "дибаг" ]) && $_SERVER [ "дибаг" ]) ( printf ("Серверээс авсан: %s"
" , nl2br (htmlspecialchars ($str )); ) $e = тэсрэх (" " , $str ); $код = массив_шилжүүлэх ($e ); $str = задлах ( " " , $e ); хэрэв ($код > 499 ) ( printf ( "SMTP харилцан ярианы асуудал.

Код %d.
Мессеж %s
"
, $код, $str);

гарах(1);

) ) ) ?>

MailSmtp() функцтэй бэлэн скриптийн жишээг татаж авах: smtpauth.php.sampleТа дээр дурдсан MailSmtp() функцийг ашиглан mail() функцийг PHP дээрх хамгийн энгийн хэлбэрийн жишээг авч үзье. // Мессежийн толгой хэсэг нь мессежийн кодчилол, From, To талбаруудыг тодорхойлдог.$headers = "MIME-хувилбар: 1.0\r\n" ; $толгой.= "Агуулгын төрөл: текст/html; charset=windows-1251\r\n" " ; ; $headers .= "Хэнд: $to \r\n" ; $толгой.="Хэнээс: Илгээгчийн нэр
// мэйл ($ to, $ subject, $ message, $headers); require_once "smtpauth.php" ;  MailSmtp ($ to, $ subject, $ message, $ headers);  ) ?> хэнд: 
 
 

Текст:

Илгээх!

Энэ маягтыг mail() функцгүйгээр ажиллуулахын тулд бид smtpauth.php файлыг require_once-ээр оруулж, mail()-тэй төстэй аргументууд дотор тайлбарласан MailSmtp() функцийг дуудсан. Үүний зэрэгцээ бид скриптийг ажиллуулахад алдаа гарахаас зайлсхийхийн тулд кодонд 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.From = шинэ шуудангийн хаяг("from@ domain.tld", "Илгээгчийн_нэр"); // илгээгчийн нэр, хаягийг зааж өгнө message.Subject = "Зурвасны сэдэв"; // захидлын сэдвийг зааж өгсөн message.BodyEncoding = System.Text.Encoding.UTF8; // үсгийн кодчилолыг зааж өгнө message.Body = "Зурвасны текст"; // үсгийн текстийг (бие) зааж өгнө SmtpClient клиент = шинэ SmtpClient("smtp.site",25); // "smtp.site" сервертэй шинэ холболт үүсгэх client.DeliveryMethod = SmtpDeliveryMethod.Network; // мессеж илгээх аргыг тодорхойлно client.EnableSsl = худал; // сервертэй аюулгүй холболт ашиглах хэрэгцээг идэвхгүй болгодог client.UseDefaultCredentials = худал; // өгөгдмөл зөвшөөрлийн дэлгэрэнгүй мэдээллийг ашиглахыг идэвхгүй болгох client.Credentials = шинэ 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@// хүлээн авагчийн хаягийг нэмэх", "Илгээгчийн_нэр") smtpMssg.To.Add (" [имэйлээр хамгаалагдсан]") "хүлээн авагчийн хаягийг нэмж байна smtpMssg.Subject = "Имэйл хаяг" "захидлын сэдвийн заалт smtpMssg.Body = "Зурвасны текст" " захидлын текстийн (биеийн) заалт smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " үсгийн кодчилолын заалт smtpMssg.IsBodyHtml = худал " үсгийн форматын заалт (үнэн - HTML, худал - HTML биш) SmtpMail-г шинэ SmtpClient болгон бүдгэрүүлэх("smtp.site", 25) "SmtpClient" төрлийн шинэ объектын мэдэгдэл SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "захидал хүргэх аргын заалт SmtpMail.UseDefaultCredentials = Худал "анхдагчаар зөвшөөрлийн итгэмжлэлийг ашиглахыг идэвхгүй болгох" SmtpMail.EnableSsl = Худал " сервертэй аюулгүй холболт ашиглах хэрэгцээг идэвхгүй болгодог SmtpMail.Credentials = шинэ NetworkCredential("postmaster@" // хүлээн авагчийн хаягийг нэмэх", "***нууц үг***") "SMTP сервер дээр зөвшөөрөл олгоход шаардлагатай дэлгэрэнгүй мэдээллийг (хэрэглэгчийн нэр, нууц үг) зааж өгнө SmtpMail.Send(smtpMssg) " мессеж илгээж байна %>

Мөн хуучирсан (мөн хуучирсан) SmtpMail анги байдаг (нэрийн зайг ашигладаг) Систем.Вэб.мэйл). VisualBasic хэлэнд ашиглах жишээг доор харуулав.

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage "MailMessage" төрлийн шинэ объектын мэдэгдэл smtpMssg.From = "Илгээгчийн_нэр // хүлээн авагчийн хаягийг нэмэх>" "Илгээгчийн нэр, хаягийг заана smtpMssg.To = "админ@ // хүлээн авагчийн хаягийг нэмэх" "хүлээн авагчийн хаягийн заалт 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") = "password" .Төгсгөлийг багцаар шинэчлэх cdoMessage = CreateObject("CDO.Message") cdoMessage багцтай .Тохиргоо = iConfig .From = "Хэрэглэгчийг турших // хүлээн авагчийн хаягийг нэмэх>" .Хэнд = "Хэрэглэгч " .Subject = "Сайн уу, Хэрэглэгч" .TextBody = "Би энэ мессежийг ASP скриптээс бичиж байна." .Send End with Set cdoMessage = Юу ч байхгүй iConfig = Юу ч биш %>

Зарим CMS нь захидал илгээх хэрэгсэл эсвэл харгалзах модулиудыг аль хэдийн суулгасан байдаг.

Wordpress

Энэхүү CMS-ийн хувьд "WP Mail SMTP" тусгай модуль байдаг бөгөөд түүний тохиргооны жишээг модулийн хуудсан дээр тайлбарласан болно.

Манай шуудангийн систем дэх жишээн дээр анхаарлаа хандуулаарай, 25 портыг ашиглах шаардлагатай бөгөөд SSL шифрлэх шаардлагагүй.

Joomla

Удирдлагын самбараас "Ерөнхий тохиргоо" хэсэгт очоод "Сервер" табыг сонгоно уу. "Мэйл" талбарт та илгээх аргыг "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/

// хүлээн авагчийн хаягийг нэмэхтаны домэйн нэрээр солигдох ёстой.

Санал болгож буй шийдэл нь захидал илгээхэд энэхүү CMS-ийн стандарт функцуудыг ашигладаг бүх NetCat модулиудад ажилладаг.

© 2024 ermake.ru -- Компьютер засварын тухай - Мэдээллийн портал