Parimet e funksionimit të postës Php dhe smtp. Dërgimi i emaileve (SMTP vs

Shtëpi / Hard disqet

Dërgimi i postës përmes SMTP nga një server lokal ju lejon të testoni dërgimin e mesazheve nga një sajt i vendosur në makinën lokale, ose më thjesht, një server lokal. Për ta bërë këtë, mund të përdorni çdo shërbim postar Yandex, Google ose mail.ru.

Para së gjithash, SMTP (Simple Mail Transfer Protocol) përdoret gjerësisht protokolli i rrjetit, i destinuar për transmetim email në rrjetet TCP/IP. Dhe të gjitha shërbimet e njohura të postës elektronike kanë protokolle të tilla.

Me ardhjen e serverëve lokalë, nuk kishte më nevojë të zgjidhni një ofrues pritës për të kontrolluar performancën e skripteve individuale ose sistemeve cms, aq më pak të paguani për të. Është shumë më e lehtë të testosh gjithçka në një kompjuter dhe më pas mund t'u tregosh të gjithëve se çfarë ke "bërë".

Shumë prej këtyre serverëve tashmë kanë të integruar software dhe funksionalitetin e nevojshëm për të punuar me postën, thjesht duhet ta konfiguroni saktë.

Për të kontrolluar funksionalitetin e një poste të tillë, kërkohet minimumi:

  • Ju mund të përdorni Openserver si një server lokal.
  • Dhe një skenar i thjeshtë, shablloni i të cilit mund të gjendet pak më poshtë.
  • Ju mund të përdorni çdo server të postës.

Dërgimi i postës php përmes konfigurimit të skriptit SMTP

Një shabllon i thjeshtë skripti që mund të kopjohet më poshtë, ose të shkarkohet nga qindra sajte të ngjashme, duhet të modifikohet.

Së pari ju duhet të ndryshoni disa vlera në shabllonin e skenarit.
te — ndryshoni në adresën postare ku do të dërgohet mesazhi i postës.
subjekt - tema e letrës
mesazh — vetë mesazhi ose trupi i letrës.

Shembull i skenarit tim:

Sigurisht, mund ta zgjeroni pak funksionalitetin dhe ta bëni skriptin të shfaqë një mesazh në lidhje me dërgimin e postës. Edhe pse në fakt është serveri SMTP ai që bën dërgimin, dhe skripti gjeneron vetëm mesazhin.

Për shembull, mund të shkruani këtë:

Të gjitha vlerat e zëvendësuara duhet të jenë në thonjëza, përndryshe skripti do të shkaktojë një gabim. Pas kësaj, mund ta ruani skriptin në dosjen e serverit lokal.

Për shembull: domains/send/index.php dhe filloni të konfiguroni dërgimin e postës përmes SMTP opensrerver.

Posta do të arrijë në çdo adresë që do të specifikohet në skript në vend të vlerës 'te' , por kjo postë do të përpunohet dhe dërgohet pikërisht nga SMTP që do të specifikohet në cilësimet e serverit të hapur.

  1. Nisja e serverit
  2. Hapni modulin e serverit të hapur me cilësimet në menynë "mail".
  3. Ne plotësojmë të gjitha fushat siç tregohet në foto, ndërsa zëvendësojmë emrin e përdoruesit, postën elektronike të dërguesit dhe fjalëkalimin nga një kuti postare e vërtetë në Yandex.

Ne i ruajmë cilësimet dhe pasi serveri të riniset, mund të përdorni vetë skriptin. Nga dosja "My Sites", hapni dosjen "send" në të cilën ndodhet skripti i ruajtur më parë index.php.

Sapo të arrihet ky skript, informacioni do të shfaqet në një dritare të re të shfletuesit që tregon se skripti ka përfunduar.

Pas kësaj ju duhet të kontrolloni tuaj kuti postare, adresa e të cilit ishte e specifikuar në skenar, nëse letra mbërriti.

Nëse nuk është aty, do të thotë që diçka nuk është konfiguruar siç duhet, ose letra ka përfunduar në dosjen e postës së padëshiruar.

Të gjitha cilësimet e tjera duken të ngjashme, por për çdo rast informacione shtesë nuk do të dëmtojë.

Për të konfiguruar dërgimin e postës përmes postës SMTP ru, thjesht duhet të zëvendësoni parametrat Yandex me parametrat e postës ru.

Dhe për të mos rindërtuar çdo herë server lokal, është më mirë të konfiguroni profile të ndryshme të serverit të hapur. Si ta bëni këtë tregohet në tutorialin e videos.

Në këtë rast, do të mjaftojë thjesht të ngarkoni profilin dhe të gjitha cilësimet që u specifikuan për këtë profil do të jenë të disponueshme pas rinisjes së serverit. Është një gjë shumë e përshtatshme dhe funksionon shumë thjeshtë.

Për çdo profil (nuk ka fare rëndësi se si do të quhet), duhet të bëhen cilësimet e veta, përveç nëse, sigurisht, planifikoni të përdorni skriptet, sistemet cms dhe aplikacionet me parametra të ndryshëm.
Nëse jo, atëherë mund t'ia dilni me cilësimet e paracaktuara.

Sa i përket postës SMTP ru, gjithçka është identike këtu.

Të dhënat e Yandex ndryshohen në të dhënat e postës ru

Dërgimi i postës përmes smtp google

Për të konfiguruar dërgimin e postës përmes Google SMTP, duhet pak përpjekje.

Së pari, krijimi i një profili në Google është më i vështirë sesa në sistemet e tjera Yandex dhe mail ru
Së dyti, sistemi thjesht nuk do ta lejojë letrën të kalojë, edhe nëse jepni informacionin tuaj të hyrjes. Për të filluar, ajo do të dërgojë një letër që përmban të gjithë informacionin e nevojshëm në lidhje me udhëzimet e mëtejshme.

Përndryshe Për Google është konfiguruar saktësisht në të njëjtën mënyrë. Ndryshojnë vetëm të gjitha të dhënat.

Për të konfiguruar dërgimin e postës përmes SMTP tjetër, të gjitha të dhënat do të jenë afërsisht të njëjta.

Nëse gjithçka funksionoi për ju dhe letrat arritën te adresuesi i specifikuar, atëherë gjithçka u bë në mënyrë korrekte. Do të ishte mirë nëse ndani përvojat tuaja në komente.

Dërgo PHP

Ky funksion zbatohet si parazgjedhje si dërgim i postës elektronike. Ky funksionalitet nuk kërkon një server të palës së tretë për të përcjellë Email. Për të kontrolluar korrektësinë e këtij funksioni, thjesht krijoni një skedar test.php në dosjen me sitin dhe vendosni kodin e mëposhtëm atje:

Ku në vend të kësaj "EMAILMARRËSI" Shkruani emailin në të cilin duhet të dërgohet letra.

Vendi këtë skedar në rrënjë të faqes tuaj.

Më pas, futni www.YourDomain/test.php në shiritin e adresave. Nëse një letër merret në adresën e specifikuar të emailit, atëherë pritja juaj funksionon saktë me funksionin e dërgimit të letrave " Postoni PHP". Është e mundur që letra të ketë përfunduar në spam, kështu që duhet të kontrollohet gjithashtu.

Nëse letra mbërriti në një kodim të pakuptueshëm, ndryshoni rreshtin: "Kontrollimi i dërgimit të postës""Po kontrollon dërgimin e postës", "Content-type:text/html;charset=utf-8".

Dhe përsërisni dërgimin e letrës përmes shiritit të adresave të shfletuesit tuaj.

Nëse pas manipulimeve të mësipërme letra e testimit nuk arrin te marrësi përfundimtar, duhet të kontaktoni mbështetjen teknike të pritjes.

Ndër të metat këtë metodë Vlen të theksohet se puna nuk është e përhershme këtë metodë. Mund të ketë ndërprerje në dërgimin e emaileve në anën e pritjes.

Disavantazhi kryesor i kësaj metode është se të gjitha letrat e marra nga emailet e klientëve nuk do të njihen nga shërbimet e postës (gmail, mail.ru, yandex.ru) pasi ato janë dërguar direkt nga faqja juaj e internetit.

Shërbimi i postës Gmail shfaq këto shkronja me një pikëpyetje dhe nënshkrimin: "Sistemi Gmail nuk ishte në gjendje të konfirmonte që kjo letër ishte dërguar nga domeni YourDomain."

Për të shmangur këtë situatë .

SMTP (Simple Mail Transfer Protocol)

SMTP - protokolli i transferimit të postës. Në total, për të vendosur transmetimin e postës duke përdorur këtë protokoll, ju nevojitet vetë serveri SMTP. Opsioni më i zakonshëm për përdorimin e postës së korporatës (domain) yandex.ru si një server SMTP është https://pdd.yandex.ru/.

Para së gjithash është e nevojshme llogari (postë) yandex, mbi bazën e të cilave do të krijohen emailet për domenin tuaj: “order@YourDomain” “info@YourDomain”… Llogaria kryesore nuk do të jetë e dukshme askund dhe përdoret vetëm për të krijuar emaile domeni bazuar në të në të ardhmen.

Pas autorizimit në llogarinë tuaj personale Yandex, krijohet një postë domeni në lidhjen https://pdd.yandex.ru/. Ky është emaili i domenit që përdoruesit do të shohin në fushën "Dërguesi".

Fusha "Dërguesi" kërkohet kur dërgoni email përmes SMTP. Përdorimi i SMTP për të dërguar letra, një kombinim i " Domeni" - "email", në këtë mënyrë letrat njihen nga shërbimet e postës.


Ndër disavantazhet e kësaj metode, vlen të përmendet pamundësia e "ngarkimit" të një portreti të postës domeni, pasi vetë shërbimet e postës nuk e ofrojnë ende këtë funksionalitet.

Cilësimet për dërgimin e postës përmes SMTP

Ka raste kur ndërtuesit e faqeve të internetit përballen me një problem me emailin e faqes së internetit duke përdorur Joomla CMS. Për shembull, kur dërgoni një letër përmes formularit reagimet Llojet e mëposhtme të gabimeve mund të shfaqen: "Funksioni i postës nuk mund të instantohej" ose "Thirrja e funksionit të postës dështoi". Është gjithashtu e mundur të dërgoni një letër pa gabime, por si rezultat ende nuk arrin tek adresuesi.

Pse ndodhin këto probleme me postën? Për t'iu përgjigjur kësaj pyetjeje, duhet të shkoni në shtegun e mëposhtëm në panelin e kontrollit: "Sistemi" - "Cilësimet e përgjithshme" - skeda "Server" - seksioni "Cilësimet e postës".

CMS Joomla ofron tre mekanizma për dërgimin e letrave: PHP Mail, Sendmail dhe SMTP. Si parazgjedhje, përdoret PHP Mail, i cili shpesh shkakton probleme, të cilat lidhen kryesisht me cilësimet e hostit të përdorur.

Bazuar në sa më sipër, konkludojmë: ose i drejtohemi ofruesit të pritjes për ndihmë, ose përdorim metodën Sendmail ose SMTP për dërgimin e letrave. Le të përqendrohemi në përdorimin e SMTP.

Cilësimet për dërgimin e postës duke përdorur SMTP

SMTP (Simple Mail Transfer Protocol) është një protokoll rrjeti që përdoret për të transferuar email. Për të përdorur SMTP, duhet të konfiguroni saktë cilësimet e serverit specifik të postës që do të përdoret.

Për të parë Cilësimet SMTP, duhet të zgjidhni “SMTP” në “Metoda e dërgimit”. Le të shohim çdo cilësim të serverëve të njohur të postës: Yandex, Mail, Gmail, Rambler dhe Yahoo.

Cilësimet SMTP për Yandex

  1. Emaili i faqes elektronike: kutia postare në yandex.ru, për shembull: [email i mbrojtur]
  2. Siguria SMTP: SSL
  3. Porta e serverit SMTP: 465
  4. Emri i përdoruesit SMTP: identifikimi i kutisë postare në yandex.ru, për shembull: khasanov (pa @yandex.ru)
  5. Serveri SMTP: smtp.yandex.ru

Cilësimet SMTP për Mail

  1. Email në uebfaqe: kuti postare në mail.ru, për shembull: [email i mbrojtur]
  2. Dërguesi i letrës: hyrja që do të shfaqet nga marrësi në fushën "Dërguesi".
  3. Çaktivizo postimin: ndezur/fikur. funksionet e postimeve masive
  4. Autorizimi në serverin SMTP: Po
  5. Siguria SMTP: SSL
  6. Porta e serverit SMTP: 465
  7. Emri i përdoruesit SMTP: kuti postare në mail.ru, për shembull: [email i mbrojtur]
  8. Fjalëkalimi SMTP: fjalëkalimi i kutisë postare
  9. Serveri SMTP: smtp.mail.ru

Cilësimet SMTP për Gmail

  1. Email i faqes elektronike: kutia postare në gmail.com, për shembull: [email i mbrojtur]
  2. Dërguesi i letrës: hyrja që do të shfaqet nga marrësi në fushën "Dërguesi".
  3. Çaktivizo postimin: ndezur/fikur. funksionet e postimeve masive
  4. Autorizimi në serverin SMTP: Po
  5. Siguria SMTP: SSL
  6. Porta e serverit SMTP: 465
  7. Emri i përdoruesit SMTP: kuti postare gmail.com, për shembull: [email i mbrojtur]
  8. Fjalëkalimi SMTP: fjalëkalimi i kutisë postare
  9. Serveri SMTP: smtp.gmail.com

Cilësimet SMTP për Rambler

  1. Email i faqes në internet: kutia postare në rambler.ru, për shembull: [email i mbrojtur]
  2. Dërguesi i letrës: hyrja që do të shfaqet nga marrësi në fushën "Dërguesi".

PHPMailer është një bibliotekë shumë e përshtatshme dhe e njohur për dërgimin e mesazheve me email nga faqja juaj e internetit. Ky artikull përshkruan cilësimet bazë të bibliotekës dhe ofron shembuj kodesh për dërgimin e mesazheve. PHPMailer ka në asortimentin e tij ndoshta gjithçka që mund të dëshironi nga puna me postën: dërgimi në mënyra të ndryshme, përmes serverëve të ndryshëm, duke përfshirë përmes smtp, aftësia për të kriptuar dhe nënshkruar letrat tuaja në mënyrë që ato të mos përfundojnë në postë të padëshiruar dhe shumë më tepër.

Mund ta shkarkoni bibliotekën PHPMailer nga https://github.com/PHPMailer/PHPMailer (butoni "Klon ose shkarko").

Së pari, do të shikoj një çift shembuj të thjeshtë për ta bërë të qartë se si të dërgoni email duke përdorur PHPMailer.

Dërgimi i emaileve përmes funksionit mail() duke përdorur PHPMailer

Nëse dëshironi të dërgoni email nga hosti juaj përmes tuaj serveri i postës, atëherë gjithçka është mjaft e thjeshtë dhe do të duket diçka si kjo:

// Përfshi bibliotekën PHPMailer përdor PHPMailer\PHPMailer\PHPMailer; kërkojnë "PHPMailer/PHPMailer.php"; // Krijo një letër $mail = new PHPMailer(); $mail->setFrom(" [email i mbrojtur]", "Ivan Ivanov"); // nga kush (email dhe emri) $mail->addAddress(" [email i mbrojtur]", "Vasya Petrov"); // kujt (email dhe emri) $mail->Subjekti = "Test"; // tema e letrës // teksti html shkronjat $mail->msgHTML("

Përshëndetje!

Kjo është një letër provë.

"); // Dërgo nëse ($mail->send()) (echo "Mesazhi u dërgua!"; ) else (echo "Gabim: " . $mail->ErrorInfo; )

Siç mund ta shihni, gjithçka është mjaft e thjeshtë: ne lidhim bibliotekën, plotësojmë nga kush, kujt, temën dhe tekstin e letrës dhe e dërgojmë atë. Dërgimi i emaileve në këtë mënyrë do të funksionojë vetëm nga adresat e postës elektronike në domenin tuaj (përveç nëse ato janë të lidhura me postues të tjerë).

Dërgimi i emaileve përmes SMTP duke përdorur PHPMailer duke përdorur shembullin e Yandex dhe Google

Ju gjithashtu mund të dërgoni një letër përmes një postuesi tjetër, për shembull, përmes Yandex. Kodi do të duket diçka si kjo:

// Përfshi bibliotekën PHPMailer përdor PHPMailer\PHPMailer\PHPMailer; përdorni PHPMailer\PHPMailer\SMTP; kërkojnë "PHPMailer/PHPMailer.php"; kërkojnë "PHPMailer/SMTP.php"; // Krijo një letër $mail = new PHPMailer(); $mail->isSMTP(); // Dërgimi nëpërmjet SMTP $mail->Host = "smtp.yandex.ru"; // Adresa e serverit SMTP $mail->SMTPAuth = e vërtetë; // Aktivizo autentifikimin SMTP $mail->Emri i përdoruesit = "login"; // emri juaj i përdoruesit (pa domen dhe @) $mail->Fjalëkalimi = "fjalëkalimi"; // fjalëkalimi juaj $mail->SMTPSecure = "ssl"; // enkriptimi ssl $mail->Port = 465; // porta e lidhjes $mail->setFrom(" [email i mbrojtur]", "Ivan Ivanov"); // nga kush $mail->addAddress(" [email i mbrojtur]", "Vasya Petrov"); // kujt $mail->Subject = "Test"; $mail->msgHTML("

Përshëndetje!

Kjo është një letër provë.

"); // Dërgo nëse ($mail->send()) (echo "Mesazhi u dërgua!"; ) else (echo "Gabim: " . $mail->ErrorInfo; )

Dërgimi i emaileve përmes Google ka një paralajmërim: ju duhet llogari google lejojnë aksesin në aplikacione të pabesueshme. Për ta bërë këtë, duhet të identifikoheni në llogarinë tuaj https://myaccount.google.com, të shkoni te siguria, të shkoni te seksioni "Aplikacionet e pabesuara që kanë qasje në llogarinë tuaj" dhe të kaloni te "E lejuar" atje. Në kohën e shkrimit, kjo faqe është https://myaccount.google.com/u/0/lesssecureapps.

$mail->Host = "smtp.gmail.com"; // Adresa e serverit SMTP $mail->SMTPAuth = e vërtetë; // Aktivizo autentifikimin SMTP $mail->Emri i përdoruesit = "login"; // emri juaj i përdoruesit $mail->Fjalëkalimi = "fjalëkalimi"; // fjalëkalimi juaj $mail->SMTPSecure = "ssl"; // enkriptimi ssl $mail->Port = 465; // porta e lidhjes

Nëse po ekzekutoni programin për dërgim përmes smtp për herë të parë, atëherë këshillohet që të përdorni shtesë përpara se të dërgoni $mail->SMTPDebug = 1; për të marrë të gjitha mesazhet nga klienti dhe serveri smtp, d.m.th. I gjithë procesi i lidhjes, autorizimit, etj. do të shfaqet në ekran, gjë që është shumë e dobishme për korrigjimin e programit tuaj.

Dërgimi i një emaili me një bashkëngjitje duke përdorur PHPMailer

Gjithçka është mjaft e thjeshtë këtu, thjesht duhet të përdorni metodën shtoj Shtojcën. Unë do të jap një shembull dhe në të njëjtën kohë do të demonstroj disa të tjerë veçori shtesë:

// Përfshi bibliotekën PHPMailer përdor PHPMailer\PHPMailer\PHPMailer; përdorni PHPMailer\PHPMailer\Exception; kërkojnë "PHPMailer/PHPMailer.php"; kërkojnë "PHPMailer/Exception.php"; // Krijo një letër $mail = PHPMailer i ri; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email i mbrojtur]", "Ivan Ivanov"); // nga kush $mail->addReplyTo(" [email i mbrojtur]", "Ivan Ivanov"); // kthej adresën $mail->addAddress(" [email i mbrojtur]", "Vasya Petrov"); // kujt $mail->Subject = "Test"; // subjekti $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // merr "trupin" e letrës nga skedari $mail->AltBody = "Letër me tekst të thjeshtë" // Letër me tekst të thjeshtë nëse klienti nuk mbështet html $mail->addAttachment("my_file.txt" // bashkëngjitni një skedar $mail-); >addAttachment("phpmailer) .jpg" // bashkëngjitni skedarin e dytë // Dërgo nëse ($mail->send()) (echo "Mesazhi u dërgua!"; ) else (echo "Gabim: " . $mail-); >Info e gabimit;

Mund të shtoni adresa të shumta marrësish duke përdorur addAddress. Ose, nëse është e nevojshme, përkundrazi, mund të pastroni të gjitha adresat e marrësve duke përdorur metodën qartë adresat (). Ju mund të pastroni të gjitha bashkëngjitjet duke përdorur clearAtachments ().

Ju gjithashtu mund të përdorni AddEmbeddedImage për të shtuar një bashkëngjitje (zakonisht një imazh) në email, i cili synohet të përdoret në kodin html dhe nuk do të jetë i disponueshëm për shkarkim. Një shembull i përdorimit të një fotografie në një letër që nuk është e disponueshme për shkarkim:

// Përfshi bibliotekën PHPMailer përdor PHPMailer\PHPMailer\PHPMailer; kërkojnë "PHPMailer/PHPMailer.php"; //Krijoni një letër $mail = PHPMailer i ri; $mail->IsHTML(true); $mail->setFrom(" [email i mbrojtur]", "Ivan Ivanov"); $mail->addAddress(" [email i mbrojtur]", "Vasya Petrov"); $mail->Subject = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Trupi = "

Imazhi në kodin html

"; // Dërgo $mail->send();

Kështu që ju mund të dërgoni letra me imazhe, të cilat janë vetëm në trupin e letrës, por nuk mund të shkarkohen si bashkëngjitje. Këto imazhe mund të përdoren kudo në kodin html të letrës, thjesht duhet të specifikoni cid-in e imazhit që keni përdorur në AddEmbeddedImage në vend të adresës url.

Dërgimi i emailit të nënshkruar dhe të koduar përmes PHPMailer

Si parazgjedhje, PHPMailer kodon të gjitha mesazhet e dërguara. Mund ta çaktivizoni enkriptimin e emailit vetëm kur dërgoni email përmes SMTP duke përdorur kodin:

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

për të firmos letrën me nënshkrimin DKIM, duhet të kryeni disa hapa:

  • Gjeneroni çelësa privatë dhe publikë për domenin tuaj
  • Shtoni një rekord DNS për një domen TXT me një çelës publik
  • Konfiguro nënshkrimin DKIM në PHPMailer përpara se të dërgosh një email

Tani do të përshkruaj çdo hap në pak më shumë detaje.

Gjenerimi i çelësave privatë dhe publikë

Nëse keni hosting Linux dhe keni akses në Shell, atëherë krijimi i skedarëve kyç është po aq i lehtë sa granatimi i dardhave, ju duhet vetëm të ekzekutoni 2 komanda me të drejtat tuaja normale të përdoruesit;

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

Përkatësisht, test-privat.pem Dhe test-publik.pem- këto janë çelësa privatë dhe publikë. Ju duhet t'i ruani ato në një dosje që nuk do të jetë e aksesueshme për vizitorët e faqes ose askënd tjetër përveç jush.

Nëse nuk është e mundur të ekzekutoni komanda në guaskë, atëherë për të gjeneruar çelësa privatë dhe publikë dhe për t'i ruajtur ato në skedarë, mund të përdorni kodin e mëposhtëm:

$domain = "test.ru"; // domeni juaj $privatekeyfile = "test-private.pem"; // emri i skedarit në të cilin do të shkruhet çelësi privat $publickeyfile = "test-public.pem"; // emri i skedarit në të cilin do të shkruhet çelësi publik nëse (file_exists($privatekeyfile)) (echo "

Përdorimi i çelësave ekzistues

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

Krijo çelësa"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); $ pk $publickey = $pubKey["çelës"];

Çelësi privat (mbaje këtë privat!):

" . $privatekey ."
"; jehonë"

Çelësi publik:

" . $publickey ."
";

Kujdes! Mos harroni të siguroheni që dosja ku do të ruhen skedarët të jetë e shkrueshme.

Shtimi i një regjistrimi DNS me një çelës publik

Nevojitet një rekord DNS në mënyrë që serverët e postës që do të marrin letrat tuaja të mund të verifikojnë nënshkrimin në letër duke lexuar rekordin DNS të domenit tuaj. Në mënyrë tipike, mund të shtoni një rekord DNS në panelin e kontrollit të domenit tuaj ose në panelin e kontrollit të hostit. Nëse nuk dini si të shtoni një hyrje, kontaktoni mbështetjen e ofruesit tuaj të pritjes.

Ju duhet të shtoni një rekord DNS si ky:

Emri i hyrjes: mail._domainkey.test.ru. (në fund ka një pikë ".")

TTL: 3600 (ose cilado që do të jetë e paracaktuar)

Lloji i postimit: TXT

Kuptimi: v=DKIM1; h=sha256; t=s; p=KEY_PUBLIC_YOUR

Në emrin e hyrjes test.ru duhet të zëvendësohet me emrin e domenit tuaj. Ju zëvendësoni fjalët "YOUR_PUBLIC_KEY" me tekstin që keni marrë në hapin e mëparshëm pas "Çelësit publik", pa "-----BEGIN PUBLIC KEY-----" dhe "-----FUND PUBLIC CEY- ---", vetëm vetë çelësi. Në këtë rast, të gjitha linjat e çelësit janë të nevojshme bashkohen në një rresht të gjatë në mënyrë që të mos ketë ndërprerje të vijës.

Vendosja e nënshkrimit DKIM në PHPMailer dhe dërgimi i një emaili

Tani gjithçka që mbetet është të bëni disa cilësime të PHPMailer përpara se të dërgoni letrën dhe ajo do të nënshkruhet. Unë mendoj se shembulli i mëposhtëm do të bëjë gjithçka të qartë:

// Përfshi bibliotekën duke përdorur PHPMailer\PHPMailer\PHPMailer; kërkojnë "PHPMailer/PHPMailer.php"; // Krijo një letër $mail = PHPMailer i ri; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email i mbrojtur]"); $mail->addadresa(" [email i mbrojtur]"); $mail->Subject = "Ky është një test"; $mail->msgHTML("

Ky është një test

"); // Vendosja e një nënshkrimi DKIM $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // Dërgo $ mail- >send();

sigurisht test.ru ju duhet të ndryshoni në emrin e domenit tuaj, dhe test-privat.pem në rrugën e plotë dhe emrin e skedarit të çelësit privat që u krijua në fazën e gjenerimit të çelësit.

Tani, emailet tuaja të dërguara përmes PHPMailer do të nënshkruhen DKIM me çelësin tuaj privat.

2019-08-05

Përshëndetje, vizitor i dashur!

Ju lutem më falni për vonesën në përditësimin e blogut. Por ka një shpjegim plotësisht të kuptueshëm për këtë. Në fund të fundit, ishte verë, vilë, mysafirë, pyll, ujë dhe shumë më tepër, të cilat nuk më lejuan të trajtoja çështjet e krijimit të një faqe interneti. Por tani jam çliruar pak, të ftuarit janë larguar dhe mendoj se tani patjetër do të jem në gjendje t'i kushtoj vëmendjen e duhur kësaj.

Pra, pasi në artikullin e fundit lidhëm postën e domenit tonë me një nga shërbimet e postës, tani le të shohim se si mund të dërgoni email nga faqja. Për më tepër, në mënyrë të tillë që letrat tona të mos përfundojnë në SPAM, por t'u dorëzohen në mënyrë të besueshme, me një shkallë të lartë probabiliteti, marrësit tanë.

Në përgjithësi, ekziston një funksion i integruar mail() për dërgimin e letrave në PHP. Por duhet theksuar se megjithë thjeshtësinë e kësaj metode (në këtë rast, për të dërguar shkronja mjafton të specifikoni vetëm një rresht kodi me parametra të caktuar), përdorimi i këtij opsioni ka një pengesë të konsiderueshme që lidhet me problemin e SPAM-it. .

Fakti është se filtrat anti-SPAM të serverëve të postës në anën e marrësit nuk favorizojnë vërtet letrat e dërguara përmes funksionit mail(). Dhe në shumicën e rasteve, mesazhe të tilla filtrohen apo edhe fshihen përpara se të arrijnë te adresuesi.

Dhe për të eliminuar sa më shumë raste të tilla, zakonisht përdoret një opsion tjetër, në të cilin letra dërgohen sikur të ishte bërë nga një shërbim postar i palëve të treta.

Kjo metodë quhet dërgimi i postës përmes SMTP me autorizim. Të cilën do ta shikojmë sot duke përdorur shembullin e dërgimit të një formulari feedback. Për më tepër, për këtë ne do të përdorim bibliotekën mjaft të njohur dhe të njohur PHPMailer, e cila e bën mjaft të thjeshtë organizimin e dërgimit të letrave përmes SMTP.

  • Si do të dërgojmë letra reagimi
  • Krijimi i një formulari reagimi
  • Instalimi i bibliotekës PHPMailer
  • Ne krijojmë një skript për dërgimin e postës përmes SMTP
  • Kontrollimi i dërgimit të emailit
  • Skedarët burimor faqe

Si do të dërgojmë letra reagimi

Para se të filloni punë praktike Pas dërgimit të letrave kthyese, së pari do të vendosim se si do ta bëjmë atë.

Formulari i komenteve është krijuar për të lejuar përdoruesin të komunikojë me administratorin e faqes dhe të përcjellë mesazhin e tij. Në mënyrë tipike, ky formular përbëhet nga disa fusha dhe një buton "Dërgo".

Në parim, për të dërguar një email mjafton të përdorni vetëm disa fusha që ofrojnë informacion të mjaftueshëm për përdoruesin dhe përmbajtjen e mesazhit, si p.sh.

  • "Emri" - për të futur emrin e dërguesit të mesazhit;
  • "E-mail" - për adresën e emailit të dërguesit;
  • "Subjekti i mesazhit";
  • "Teksti i mesazhit".

Edhe pse mund të shtoni të tjerë. Për shembull, një numër telefoni, nëse kjo është vërtet e nevojshme.

Në rastin tonë, letra të tilla do të dërgohen në adresën e administratorit të faqes nga një kuti postare e vërtetë me autorizim në shërbimin e postës me të cilin është lidhur domeni ynë.

Meqenëse në artikullin e mëparshëm u fokusuam në kontrollimin e lidhjes së postës së domenit me shërbimin Yandex.Mail, ne do të dërgojmë postë për këtë opsion. Edhe pse kjo nuk është e rëndësishme. Më poshtë do të shihni ato opsione që, kur ndryshohen, do t'ju lejojnë të dërgoni email përmes serverit të postës Mail.ru.

Si një kuti postare e vërtetë nga e cila do të dërgohen letra, ne do të përdorim llogarinë e një përdoruesi të postës domeni të sapokrijuar, le të themi me adresën [email i mbrojtur]. Dhe ne do t'i dërgojmë këto letra në kutinë postare të administratorit [email i mbrojtur], të cilin e krijuam më parë në artikullin e mëparshëm.

Kështu, dërguesi i letrës nga formulari i komenteve do të jetë kutia postare [email i mbrojtur]., dhe marrësi - [email i mbrojtur]. Në këtë rast, të gjitha informacionet në lidhje me përdoruesin që dërgoi mesazhin me përmbajtjen e tij do të transmetohen në trupin e letrës së dërguar.

Krijimi i një formulari reagimi

Pasi të kemi vendosur për procedurën e dërgimit të letrave, tani do të krijojmë një formular reagimi me të cilin do ta bëjmë këtë.

Më poshtë është kodi HTML për këtë formular, të cilin do ta vendosim në faqen "Kontaktet" (skedar kontakty.php në drejtorinë e artikujve).

    "artikull" >

    Kontaktet

    Feedback

    "kontakt" veprim = "#" metoda = "post" >

    Formulari i komenteve

    Për të gjitha pyetjet, kërkesat dhe propozimet e biznesit, mund të na kontaktoni përmes formularit të komenteve më poshtë.

    "blloku i kontaktit" >

    "hyrje kontakti" >

    "tekst" id = "emri i kontaktit" emri = "emri i kontaktit" titull = "Emri duhet të jetë në Rusisht dhe të përmbajë të paktën 3 karaktere" model = "{3,}" kërkohet >

  1. "kontakt bosh" >

    "hyrje kontakti" >

    "email" id = "email-i kontaktit" emri = "email-i kontaktit" kërkohet >

  2. "subjekti i kontaktit" >

  3. "kontakt-koment" >

  4. "butoni i kontaktit" >

    "paraqis" emri = "butoni i kontaktit" vlera = "Dërgo" >

Fig.1 Kodi HTML i formularit të reagimit

Ju mund të shihni se si duket përfundimisht forma e komenteve e paraqitur këtu në pamjen e mëposhtme të ekranit.

Kështu, krijohet forma e dëshiruar. Dhe tani mund të kaloni në çështjet e përpunimit dhe dërgimit të të dhënave në formën e një mesazhi email.

Instalimi i bibliotekës PHPMailer

Siç u përmend më parë, për të dërguar postë ne do të përdorim bibliotekën PHPMailer, e cila do të thjeshtojë shumë dërgimin e emailit nëpërmjet Protokolli SMTP me autorizim në një shërbim postar të palëve të treta.

Për ta instaluar duhet ta shkarkoni dosjet e nevojshme. Kjo mund të bëhet nga shërbimi në internet GitHub duke përdorur Composer (një menaxher i varësisë së paketës për PHP). Ose thjesht shkarkoni skedarët e nevojshëm në mënyrën e zakonshme.

pamje nga ekrani 73

Më poshtë është faqja e shërbimit të internetit GitHub, ku shënohet lidhja për shkarkimin e rregullt të bibliotekës PHPMailer.

Përveç kësaj, versioni i fundit 6.0.7, i cili u ruajt në kohën e shkrimit të këtij artikulli, mund të shkarkohet nga materialet e bashkangjitura.

Në çdo rast, skedari i arkivit që rezulton duhet të zbërthehet, pas së cilës dosja e nxjerrë PHPMailer-master me të gjithë përmbajtjen e saj duhet të vendoset në rrënjën e faqes. Në të njëjtën kohë, për thjeshtësi, mund ta riemërtoni PHPMailer. Më poshtë është përmbajtja e dosjes PHPMailer të vendosur në direktorinë rrënjë të sajtit.

Kështu ne instaluam bibliotekën PHPMailer. Pas së cilës ne mund të fillojmë të krijojmë një skript me të cilin do të dërgojmë mesazhe me email nga faqja jonë e internetit.

Ne krijojmë një skript për dërgimin e postës përmes SMTP

Për të hartuar skriptin, mjafton të përdorni rekomandimet për përdorimin e PHPMailer të dhëna në faqen GitHub, të cilën e kemi përdorur më parë për të shkarkuar bibliotekën.

Ato, në veçanti, tregojnë se në fillim të skriptit kërkohet të importohen klasa PHPMailer në hapësirën globale të emrave. Dhe jepen linja specifike të kodit përkatës. Ekzistojnë gjithashtu shembuj të përdorimit të vetive dhe metodave të PHPMailer, duke përfshirë opsionin e dërgimit të postës përmes SMTP.

Por nëse kjo nuk mjafton, atëherë mund të përdorni edhe dokumentacionin, i cili përmban një përshkrim të të gjitha vetive dhe metodave të kësaj biblioteke.

pamje nga ekrani 74

Më poshtë është kodi i skriptit për dërgimin e postës nga formulari i komenteve përmes SMTP me autorizim. Ku të gjitha rreshtat që lidhen me PHPMailer jepen me shpjegim dhe theksohen me një sfond të lehtë.

Pjesa tjetër, duke përfshirë fragmente që lidhen me marrjen dhe përpunimin e të dhënave nga formulari, të cilat më parë duhej t'i përdornim në procesorë të tjerë, tregohet nga një sfond i errët. Ato u diskutuan në disa detaje më herët në një artikull kushtuar posaçërisht çështjeve të marrjes dhe verifikimit të të dhënave nga një formular në PHP. Ku folëm edhe për funksionin universal të përdoruesit për vërtetimin dhe përpunimin e të dhënave të formularit check_symbol().

Ne do ta vendosim këtë skript në të njëjtin skedar kontakty.php në të cilin kemi krijuar më parë formularin e reagimit.

    //----Skript për dërgimin e postës përmes SMTP duke përdorur PHPMailer----

    //Importoni klasat e PHPMailer në hapësirën globale të emrave. Ata duhet të jenë në krye të skenarit, jo brenda funksionit

    përdorni PHPMailer\PHPMailer\PHPMailer ;

    përdorni PHPMailer\PHPMailer\Exception ;

    nëse (!bosh($_POST["butoni i kontaktit" ])) (

    $emri = $_POST["emri i kontaktit" ];

    $name = check_simbol ($emri, "Emri" , "1" , "/^+\z/iu" );

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

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

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

    $subject = check_simbol ($subject, "Subject Message" , "1" , "0" );

    $comment = $_POST["kontakt-koment"];

    $comment = check_simbol ($comment, "Teksti i mesazhit", "1" , "0" );

    nëse (!bosh($GLOBALS["alarm" ])) (

    $alarm = "Të dhënat e formularit nuk u dërguan. U gjetën gabimet e mëposhtme:\n".$alert;

    përfshijnë"alert.php";

    tjetër {

    //Lidhja e bibliotekës

    kërkojnë"PHPMailer/src/PHPMailer.php" ;

    kërkojnë"PHPMailer/src/Exception.php";

    kërkojnë"PHPMailer/src/SMTP.php";

    $mail = e re PHPMailer(); //Inicializoni klasën

    $from = " [email i mbrojtur]" ; //Adresa e emailit nga e cila është dërguar letra

    $to = " [email i mbrojtur]" ; //Adresa e marrësit

    $mail -> isSMTP(); //Përdor protokollin SMTP

    $mail -> Host = "smtp.yandex.ru" ; //Adresa e serverit të postës

    $mail -> SMTPAuth = e vërtetë ; //Aktivizo modalitetin e autorizimit

    $mail -> Emri i përdoruesit = " [email i mbrojtur]" ; //Hyrja nga një email domeni i lidhur me një shërbim email-i të palëve të treta (në këtë rast, Yandex.Mail)

    $mail -> Fjalëkalimi = "27MrDon89" ; //Fjalëkalimi për postën e domenit

    $mail -> SMTPSecure = "ssl" ; //Protokolli i enkriptimit

    $mail -> Port = "465" ; //Port server SMTP

    $mail -> CharSet = "UTF-8" ; //Enkodimi

    $mail -> setFrom ($from, "Administrator" ); //Adresa dhe emri i dërguesit

    $mail -> addAddress ($to, "Administrator" ); //Adresa dhe emri i marrësit

    $mail -> isHTML ( e vërtetë ); //Vendosni formatin e emailit në HTML

    $mail -> Subjekti = "Formulari i komenteve u dorëzua"; //Subjekti i emailit (titulli)

    $mail -> Trupi = "

    Emri i dërguesit: $emri

    Adresa e dërguesit: $email

    Tema e mesazhit: $subjekt

    Përmbajtja e mesazhit: $koment

    " ; //Përmbajtja e mesazhit

    $mail -> AltBody = "Teksti i letrës alternative"; //Email alternativ nëse klienti i emailit nuk e mbështet formatin HTML

    $mail -> SMTPDbug = 0 ; //Aktivizo korrigjimin e gabimeve SMTP: 0 - joaktive (për përdorim normal), 1 = mesazhet e klientit, 2 - mesazhet e klientit dhe serverit

    nëse($mail -> dërgo()) (

    $alarm = "Mesazhi u dërgua"; //Nxjerr një mesazh në kutinë e dialogut të shfletuesit për dërgimin e suksesshëm të letrës

    tjetër {

    $alarm = "Gabim, emaili nuk mund të dërgohet:".$mail -> ErrorInfo ; //Nxjerr një mesazh gabimi

    përfshijnë"alert.php";

Fig.5 Skript për dërgimin e emailit nëpërmjet SMTP me autorizim

Siç mund ta shihni, të gjitha linjat që lidhen drejtpërdrejt me dërgimin e një mesazhi email, në të cilin specifikohen metodat dhe vetitë e nevojshme, shoqërohen me komente. Prandaj, nuk ka kuptim të përsërisim veten, por mund të ndalemi vetëm në disa prej tyre, të cilat me të vërtetë kërkojnë shpjegime shtesë, përkatësisht:

1. Për shkak të faktit se letra dërgohet nga një shërbim postar i palës së tretë, këtu aplikohen cilësimet që korrespondojnë me serverin specifik SMTP. Në këtë rast, për rastin e përdorimit të serverit Yandex.Mail, zbatohen vlerat e mëposhtme të vetive:

  • Prona Pritësi(pos.28) - Adresa e serverit të postës me vlerën smtp.yandex.ru;
  • Prona SMTPScure
  • Prona Port

Këto vlera të vetive janë marrë nga faqja Yandex.Help e treguar në pamjen e mëposhtme të ekranit.

Por një informacion i tillë mund të merret edhe nga burime të tjera. Për ta bërë këtë, thjesht shkruani pyetjen e duhur në një motor kërkimi, për shembull: "Server Yandex smtp". Ku mund të gjeni një numër të madh referencash për këtë çështje.

Në mënyrë të ngjashme, vlerat e cilësimeve mund të merren nga serverë të tjerë SMTP. Më poshtë është një pamje e faqes së Ndihmës Mail.ru, e cila shfaq cilësimet e serverit SMTP të shërbimit të postës Mail.ru.

Dhe kështu, në rastin e përdorimit të Mail.ru si një server SMTP të palës së tretë, duhet të zbatohen vlerat e mëposhtme të vetive të klasës PHPMailer:

  • Prona Pritësi(pos.28) - Adresa e serverit të postës (smtp.mail.ru);
  • Prona SMTPScure(pos.32) - Protokolli i enkriptimit (ssl);
  • Prona Port(poz. 33) - Porta e serverit SMTP (465).

Një qasje e ngjashme duhet të zbatohet për shërbimet e tjera të postës elektronike.

2. Në pronë Emri i përdoruesit(poz. 30) është e nevojshme të tregohet adresa e plotë e kutisë postare të domenit. Në këtë rast, " [email i mbrojtur]".

Megjithatë, nëse përdorni një llogari të ndryshme nga një llogari e postës domeni për të dërguar letra, por një adresë që lidhet drejtpërdrejt me shërbimin e postës, për shembull " [email i mbrojtur]", atëherë login duhet të jetë vetëm pjesa e adresës deri në shenjën "@". Në këtë rast, login do të kishte vlerën "feedback".

3. PHPMailer ofron një pronë SMTPDbug(poz. 50), i cili ju lejon të shfaqni nivele të ndryshme gabimesh në ekranin e shfletuesit. Kjo veçori thjeshton shumë gjetjen e problemeve gjatë korrigjimit të një skripti.

Në mënyrë tipike, në modalitetin normal, me vlerën e vendosur në 0, dalja e informacionit të detajuar të gabimit çaktivizohet. Por nëse lindin probleme me dërgimin e postës, ose gjatë korrigjimit, është e mundur të përdoren vlera të tjera për të shfaqur informacione më kuptimplote rreth gabimit.

Për të parë se si duket kjo në praktikë, le të futim përkohësisht një gabim në cilësimet. Për shembull, në fjalëkalimin e postës së domenit (pronësia Fjalëkalimi, pos.31). Dhe gjithashtu për të shfaqur informacion të detajuar në lidhje me gabimin, të vendosur përkohësisht në pronë SMTPDbug(pos.50) vlera 1. Pas, kur çdo gjë të korrigjohet dhe kontrollohet, ne do të çaktivizojmë modalitetin e korrigjimit të SMTP, duke zëvendësuar 1 me 0.

Në pjesën e fundit të skriptit, pasi të specifikohen të gjitha vetitë dhe metodat e nevojshme, përdoret metoda për të dërguar letrën dërgo ()) (poz. 51). Dhe nëse letra është dërguar, dhe metoda dërgo () për objekt $mail kthen true, pastaj në dialogun e shfletuesit përmes ndryshores $alarm Do të shfaqet një mesazh për dërgimin e suksesshëm të postës (poz. 52).

Nëse, për ndonjë arsye, posta nuk mund të dërgohej, dhe në përputhje me rrethanat, metoda nuk mund të kthehej e vërtetë, atëherë kjo gjendje do të shoqërohet me një mesazh gabimi përkatës (poz. 55).

Kontrollimi i dërgimit të emailit

Pasi të kemi krijuar një skript për dërgimin e postës, natyrisht, duhet të shohim rezultatin e "krijimtarisë" tonë. A kemi marrë parasysh gjithçka këtu dhe a nuk kemi bërë ndonjë gabim?

Për ta bërë këtë, le të përpiqemi, siç synohet, t'i dërgojmë një mesazh nga përdoruesi administratorit të faqes nga formulari i komenteve. Më poshtë është një pamje nga ekrani i formularit të komenteve me fushat e plotësuara përpara se të dorëzohet.

Dhe këtu është rezultati i paraqitjes së formularit.

Ku, nga mesazhi në kutinë e dialogut të shfletuesit, është e qartë se letra nuk mund të dërgohet për shkak të një problemi me lidhjen SMTP.

Por, që tani prona SMTPDbug(poz. 50) i është caktuar vlera 1, atëherë mund të shohim informacione të detajuara për gabimin që ka ndodhur dhe të zbulojmë arsyen e shfaqjes së tij.

Pamja e mëposhtme e ekranit tregon se gjatë përpjekjes për t'u lidhur, u zbulua një gabim vërtetimi, që do të thotë përdorimi i një hyrje ose fjalëkalimi të pasaktë.

Pas eliminimit të mospërputhjes së fjalëkalimit (më parë është përdorur fjalëkalimi i gabuar për të kontrolluar daljen e informacionit shtesë në lidhje me gabimin), ne do të përpiqemi të dërgojmë përsëri postën.

Këtë herë gjithçka dukej se po shkonte mirë dhe morëm një mesazh se posta u dërgua me sukses. Me sa duket, përveç gabimit të përkohshëm të futur qëllimisht në fjalëkalimin e postës së domenit, nuk kemi bërë asnjë gabim tjetër.

Por për t'u siguruar që letra i është dorëzuar adresuesit, le të fusim postën me adresën [email i mbrojtur] dhe shikoni rezultatin.

Siç mund ta shihni, letra nga adresa [email i mbrojtur], nga i cili dërguam një mesazh me email me emrin "Feedback" arriti me sukses te administratori i faqes. Në të njëjtën kohë, trupi i letrës përmban të gjithë përmbajtjen që krijuam në skenar duke përdorur të dhënat e marra nga formulari i komenteve, përkatësisht:

  • Emri i dërguesit: Nikolay;
  • Adresa e dërguesit: [email i mbrojtur];
  • Tema e mesazhit: Kontrollimi i dërgimit të postës;
  • Përmbajtja e mesazhit: Test mesazh.

Tani, pasi të keni kontrolluar me sukses dërgimin e postës, mund të çaktivizoni modalitetin e korrigjimit të SMTP duke caktuar pronën SMTPDbug(pos.50) vlera 0.

Kështu, ne përfunduam detyrën e krijimit të një mjeti për dërgimin e postës përmes SMTP me autorizim duke përdorur një server poste të palës së tretë.

Për shembull, në artikullin tjetër, ne do të shikojmë se si të dërgojmë email konfirmimi për të rikuperuar të dhënat e llogarisë së përdoruesit të regjistruar.

Skedarët e burimit të faqes

Skedarët burimor të faqes me përditësimet që janë bërë në këtë artikull mund të shkarkohen nga materialet shtesë të bashkangjitura:

  • skedarët e drejtorisë www
  • Tabelat e bazës së të dhënave MySQL

© 2024 ermake.ru -- Rreth riparimit të PC - Portali informacioni