Php pašto siuntimas per Yandex smtp. Laiškų siuntimas per SMTP iš vietinio serverio
PHPMailer yra labai patogi ir populiari biblioteka siunčiant el pranešimus iš jūsų svetainės. Šiame straipsnyje aprašomi pagrindiniai bibliotekos parametrai ir pateikiami pranešimų siuntimo kodų pavyzdžiai. „PHPMailer“ asortimente yra turbūt visko, ko galite norėti dirbant su paštu: siuntimą įvairiais būdais, per skirtingus serverius, įskaitant per smtp, galimybė užšifruoti ir pasirašyti jūsų laiškus, kad jie nepatektų į šlamštą ir dar daugiau.
PHPMailer biblioteką galite atsisiųsti iš https://github.com/PHPMailer/PHPMailer (mygtukas „Klonuoti arba atsisiųsti“).
Pirmiausia pažiūrėsiu į porą paprasti pavyzdžiai kad būtų aišku, kaip siųsti el. laiškus naudojant PHPMailer.
Laiškų siuntimas per mail() funkciją naudojant PHPMailer
Jei norite siųsti el. laiškus iš savo prieglobos per savo pašto serveris, tada viskas yra gana paprasta ir atrodys maždaug taip:
// Įtraukti PHPMailer biblioteką naudoti PHPMailer\PHPMailer\PHPMailer; reikalauti "PHPMailer/PHPMailer.php"; // Sukurti laišką $mail = new PHPMailer(); $mail->setFrom(" [apsaugotas el. paštas]", "Ivanas Ivanovas"); // kieno (el. pašto adresas ir vardas) $mail->addAddress(" [apsaugotas el. paštas]", "Vasya Petrov"); // kam (el. paštas ir vardas) $mail->Subject = "Test"; // laiško tema // html tekstas raidės $mail->msgHTML("
Sveiki!
Tai yra bandomasis laiškas.
"); // Siųsti if ($mail->send()) ( echo "Pranešimas išsiųstas!"; ) else ( echo "Klaida: " . $mail->ErrorInfo; )Kaip matote, viskas gana paprasta: pajungiame biblioteką, užpildome iš ko, kam, laiško temą, tekstą ir išsiunčiame. Tokiu būdu el. laiškų siuntimas veiks tik iš jūsų domene esančių el. pašto adresų (nebent jie susieti su kitais el. pašto adresais).
Laiškų siuntimas per SMTP naudojant PHPMailer naudojant Yandex ir Google pavyzdį
Taip pat galite išsiųsti laišką per kitą pašto dėžutę, pavyzdžiui, per Yandex. Kodas atrodys maždaug taip:
// Įtraukti PHPMailer biblioteką naudoti PHPMailer\PHPMailer\PHPMailer; naudoti PHPMailer\PHPMailer\SMTP; reikalauti "PHPMailer/PHPMailer.php"; reikalauti "PHPMailer/SMTP.php"; // Sukurti laišką $mail = new PHPMailer(); $paštas->isSMTP(); // Siuntimas per SMTP $mail->Host = "smtp.yandex.ru"; // SMTP serverio adresas $mail->SMTPAuth = true; // Įjungti SMTP autentifikavimą $mail->Vartotojo vardas = "prisijungti"; // jūsų vartotojo vardas (be domeno ir @) $mail->Password = "slaptažodis"; // jūsų slaptažodis $mail->SMTPSecure = "ssl"; // ssl šifravimas $ paštas->Privadas = 465; // ryšio prievadas $mail->setFrom(" [apsaugotas el. paštas]", "Ivanas Ivanovas"); // iš kurio $mail->addAddress(" [apsaugotas el. paštas]", "Vasya Petrov"); // kam $mail->Subject = "Test"; $mail->msgHTML("
Sveiki!
Tai yra bandomasis laiškas.
"); // Siųsti if ($mail->send()) ( echo "Pranešimas išsiųstas!"; ) else ( echo "Klaida: " . $mail->ErrorInfo; )Laiškų siuntimas per Google turi vieną įspėjimą: reikia google paskyra leisti prieiti prie nepatikimų programų. Norėdami tai padaryti, eikite į savo paskyrą https://myaccount.google.com, eikite į sauga, eikite į skyrių „Nepatikimos programos, turinčios prieigą prie jūsų paskyros“ ir ten perjunkite į „Leidžiama“. Rašymo metu šis puslapis yra https://myaccount.google.com/u/0/lesssecureapps.
$mail->Host = "smtp.gmail.com"; // SMTP serverio adresas $mail->SMTPAuth = true; // Įjungti SMTP autentifikavimą $mail->Vartotojo vardas = "prisijungti"; // jūsų vartotojo vardas $mail->Slaptažodis = "slaptažodis"; // jūsų slaptažodis $mail->SMTPSecure = "ssl"; // ssl šifravimas $ paštas->Privadas = 465; // ryšio prievadas
Jei pirmą kartą naudojate programą, skirtą siųsti per smtp, patartina naudoti papildomai prieš siunčiant $paštas->SMTPDebug = 1; gauti visus pranešimus iš kliento ir smtp serverio, t.y. Visas prisijungimo, autorizacijos ir tt procesas bus rodomas ekrane, o tai labai naudinga derinant programą.
Laiško su priedu siuntimas naudojant PHPMailer
Čia viskas gana paprasta, tereikia naudoti metodą pridėti Priedas. Pateiksiu pavyzdį ir tuo pačiu pademonstruosiu dar keletą papildomos funkcijos:
// Įtraukti PHPMailer biblioteką naudoti PHPMailer\PHPMailer\PHPMailer; naudoti PHPMailer\PHPMailer\Exception; reikalauti "PHPMailer/PHPMailer.php"; reikalauti "PHPMailer/Exception.php"; // Sukurti laišką $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [apsaugotas el. paštas]", "Ivanas Ivanovas"); // iš kurio $mail->addReplyTo(" [apsaugotas el. paštas]", "Ivanas Ivanovas"); // grąžinimo adresas $mail->addAddress(" [apsaugotas el. paštas]", "Vasya Petrov"); // kam $mail->Subject = "Test"; // tema $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // gauti "body" laiško iš failo $mail->AltBody = "Paprasto teksto laiškas" // paprasto teksto raidė, jei klientas nepalaiko html $mail->addAttachment("mano_failas.txt" // pridėti vieną failą $mail-); >addAttachment("phpmailer) .jpg"); // pridėti antrą failą // Send if ($mail->send()) ( echo "Pranešimas išsiųstas!"; ) else ( echo "Klaida: " . $mail- > ErrorInfo;
Galite pridėti kelis gavėjų adresus naudodami addAddress. Arba, jei reikia, galite, priešingai, išvalyti visus gavėjų adresus naudodami šį metodą ClearAddresses (). Galite išvalyti visus priedus naudodami išvalyti priedus ().
Taip pat galite naudoti AddEmbeddedImage laiško pridėti priedą (dažniausiai paveikslėlį), kuris skirtas naudoti html kode ir kurio nebus galima atsisiųsti. Paveikslėlio naudojimo laiške, kurio negalima atsisiųsti, pavyzdys:
// Įtraukti PHPMailer biblioteką naudoti PHPMailer\PHPMailer\PHPMailer; reikalauti "PHPMailer/PHPMailer.php"; //Sukurti laišką $mail = new PHPMailer; $paštas->IsHTML(tiesa); $mail->setFrom(" [apsaugotas el. paštas]", "Ivanas Ivanovas"); $paštas->adresas(" [apsaugotas el. paštas]", "Vasya Petrov"); $paštas->Subject = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $paštas->Body = "
Vaizdas html kode
"; // Siųsti $mail-> send();Taigi galite siųsti raidės su vaizdais, kurie yra tik laiško tekste, bet negali būti atsisiunčiami kaip priedas. Šiuos vaizdus galima naudoti bet kurioje laiško html kode, tereikia nurodyti vaizdo cid, kurį naudojote AddEmbeddedImage, o ne URL adresą.
Pasirašytų ir užšifruotų laiškų siuntimas per PHPMailer
Pagal numatytuosius nustatymus PHPMailer užšifruoja visus išsiųstus pranešimus. El. laiškų šifravimą galite išjungti tik siųsdami el. laiškus per SMTP naudodami kodą:
$paštas->SMTPSecure = false; $paštas->SMTPAutoTLS = false;
Į laišką pasirašyti DKIM parašu, turite atlikti kelis veiksmus:
- Generuokite privačius ir viešuosius savo domeno raktus
- Pridėkite DNS įrašą TXT domenui su viešuoju raktu
- Prieš siųsdami el. laišką, sukonfigūruokite DKIM parašą PHPMailer
Dabar kiekvieną žingsnį aprašysiu šiek tiek išsamiau.
Privačių ir viešųjų raktų generavimas
Jei turite „Linux“ prieglobą ir turite prieigą prie „Shell“, tada sugeneruoti pagrindinius failus yra taip pat paprasta, kaip išlukštenti kriaušes, su įprastomis vartotojo teisėmis paleisti tik 2 komandas:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
Atitinkamai, testas-privatus.pem Ir test-public.pem- tai privatūs ir viešieji raktai. Turite juos išsaugoti aplanke, kurio negalės pasiekti svetainės lankytojai ar kas nors kitas, išskyrus jus.
Jei apvalkale neįmanoma vykdyti komandų, tada norėdami sugeneruoti privačius ir viešuosius raktus ir išsaugoti juos failuose, galite naudoti šį kodą:
$domenas = "test.ru"; // jūsų domenas $privatekeyfile = "test-private.pem"; // failo, kuriame bus įrašytas privatus raktas, pavadinimas $publickeyfile = "test-public.pem"; // failo, kuriame bus įrašytas viešasis raktas pavadinimas if (file_exists($privatekeyfile)) ( echo "
Naudojant esamus raktus
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Sukurti raktus"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file, $keyget_Keyple); ils ($ pk ; $viešasis raktas = $pubKey["raktas"];
Privatus raktas (išlikti privatus!):
". $privatekey.""; aidas"
Viešasis raktas:
". $viešasis raktas."";
Dėmesio! Nepamirškite įsitikinti, kad aplankas, kuriame bus saugomi failai, yra įrašomas.
DNS įrašo pridėjimas su viešuoju raktu
DNS įrašas reikalingas, kad pašto serveriai, kurie gaus jūsų laiškus, galėtų patikrinti laiško parašą skaitydami jūsų domeno DNS įrašą. Paprastai galite pridėti DNS įrašą savo domeno valdymo skydelyje arba prieglobos valdymo skydelyje. Jei nežinote, kaip pridėti įrašą, susisiekite su prieglobos paslaugų teikėjo palaikymo komanda.
Turite pridėti tokį DNS įrašą:
Įrašo pavadinimas: mail._domainkey.test.ru. (pabaigoje yra taškas ".")
TTL: 3600 (arba kuris bus numatytasis)
Įrašo tipas: TXT
Reikšmė: v=DKIM1; h = sha256; t=s; p=YOUR_PUBLIC_KEY
Įrašo pavadinime test.ru turi būti pakeistas jūsų domeno vardu. Pakeičiate žodžius „YOUR_PUBLIC_KEY“ tekstu, kurį gavote atlikdami ankstesnį veiksmą po „Viešasis raktas“, be „-----BEGIN VIEŠAS RAKTAS-----“ ir „-----END VIEŠAS RAKTAS- -- --“, tik pats raktas. Šiuo atveju reikalingos visos pagrindinės eilutės sujungti į vieną ilgą eilutę kad nebūtų eilučių pertraukų.
DKIM parašo nustatymas PHPMailer ir el
Dabar belieka prieš siunčiant laišką padaryti kelis PHPMailer nustatymus ir jis bus pasirašytas. Manau, kad šis pavyzdys viską paaiškins:
// Įtraukti biblioteką naudoti PHPMailer\PHPMailer\PHPMailer; reikalauti "PHPMailer/PHPMailer.php"; // Sukurti laišką $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [apsaugotas el. paštas]"); $paštas->adresas(" [apsaugotas el. paštas]"); $mail->Subject = "Tai bandymas"; $mail->msgHTML("
Tai yra testas
"); // DKIM parašo nustatymas $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "paštas"; // Siųsti $ paštas- >siųsti();Žinoma test.ru turėtumėte pakeisti savo domeno vardą ir testas-privatus.pemį visą privataus rakto failo kelią ir pavadinimą, kuris buvo sukurtas rakto generavimo etape.
Dabar jūsų el. laiškai, išsiųsti per PHPMailer, bus pasirašyti DKIM su jūsų privačiu raktu.
Tam, kad tam tikra svetainė turėtų galimybę dirbti efektyviai ir produktyviai, į jos kūrimą reikėtų žiūrėti kiek įmanoma atsakingiau ir atidžiau. Ypatingo dėmesio nusipelno sistemos, kuri bus naudojama kuriant internetinę parduotuvę, pasirinkimas. Faktas yra tai, kad komercinė platforma, kurios specializacija yra prekių ar paslaugų pardavimas, turi leisti įdiegti visas reikiamas funkcijas ir būti lengvai naudojama tiek administratoriams, kurie užsiima svetainių priežiūra ir užpildymu, tiek internetinių parduotuvių klientams. Daugelis žmonių ir įmonių, susiduriančių su sau tinkamo TVS pasirinkimo klausimu, analizuoja, ar rinktis Magento ar OkayCMS. Palyginkime šių svetainių variklių funkcijas ir galimybes.
Dirbdamas su savo svetaine, žmogus ar įmonė turės įdėti daug pastangų – tik tokiu atveju galite pasikliauti teigiamų rezultatų ir gauti tikrai veiksmingą įrankį. Vienas esminių klausimų, kurį būtina išspręsti dar prieš pradedant kurti svetainę, bus kaip apsispręsti dėl tinkamiausio TVS varianto. Toliau palyginsime dvi TVS: Joomla arba OkayCMS ir atkreipsime dėmesį į kiekvienos iš jų ypatybes.
Turėti savo svetainę yra vienas iš pagrindinių efektyvaus ir sėkmingo verslo reikalavimų. Statistika aiškiai rodo, kad daugėja įvairių prekių pirkimų ir paslaugų užsakymų internetu. Atsižvelgiant į tai, dauguma komercinių įmonių jau žino, kad reikia turėti savo svetainę. Tačiau vien to, kad turite interneto išteklių, nepakanka, kad būtų galima tikėtis jo efektyvumo, pelningumo ir numatomos verslo naudos.
Ruošiantis kurti savo svetainę ar atidaryti internetinę parduotuvę, reikia atsižvelgti ir išanalizuoti daugybę klausimų, taip pat spręsti įvairias problemas. Tik tokiu atveju galite tikėtis, kad jūsų projektas duos teigiamų rezultatų ir galės visiškai pateisinti jūsų lūkesčius. Tarp įvairių klausimų, susijusių su internetinės parduotuvės plėtra, TVS pasirinkimo klausimas nusipelno ypatingo dėmesio. Kad jums būtų lengviau apsispręsti dėl optimalaus variklio
Planuodami kurti savo internetinę svetainę būsimai internetinei parduotuvei, gana daug žmonių ir net pardavimų srityje besispecializuojančių įmonių susiduria su nelengvu ir itin svarbiu pasirinkimu: kurią iš esamų TVS pasirinkti. Jei galvojate, ką pasirinkti: PrestaShop ar OkayCMS, siūlome perskaityti šį straipsnį, kuriame palyginsime šias dvi interneto svetainių kūrimo sistemas, ypač internetines parduotuves.
2019-08-05
Sveiki, mielas lankytojau!
Prašau atleisti už vėlavimą atnaujinti tinklaraštį. Tačiau tam yra visiškai suprantamas paaiškinimas. Juk vasara, vasarnamis, svečiai, miškas, vanduo ir daug daugiau, kas neleido spręsti tinklalapio kūrimo klausimų. Bet dabar šiek tiek išsilaisvinau, svečiai išvažiavo ir manau, kad dabar tikrai galėsiu tam skirti deramą dėmesį.
Taigi, kai paskutiniame straipsnyje sujungėme savo domeno paštą su viena iš pašto paslaugų, dabar pažiūrėkime, kaip galite siųsti el. laiškus iš svetainės. Be to, tokiu būdu, kad mūsų laiškai nepatektų į SPAM, o būtų patikimai, su didele tikimybe, pristatyti mūsų gavėjams.
Apskritai, yra įmontuota mail() funkcija, skirta siųsti laiškus PHP. Tačiau reikia pažymėti, kad nepaisant šio metodo paprastumo (šiuo atveju norint išsiųsti laiškus pakanka nurodyti tik vieną kodo eilutę su tam tikrais parametrais), šios parinkties naudojimas turi reikšmingą trūkumą, susijusį su SPAM problema. .
Faktas yra tas, kad gavėjo pusėje esantys pašto serverių anti-SPAM filtrai nelabai palankiai vertina laiškus, siunčiamus per mail() funkciją. Ir dažniausiai tokie pranešimai filtruojami ar net ištrinami dar nepasiekus adresato.
O norint kuo labiau pašalinti tokius atvejus, dažniausiai naudojamas kitas variantas, kai laiškai siunčiami taip, lyg tai būtų daryta trečiosios šalies pašto tarnybos.
Šis metodas vadinamas laiškų siuntimu per SMTP su leidimu. Į kurį šiandien pažvelgsime naudodamiesi formos pateikimo pavyzdžiu atsiliepimai. Be to, tam naudosime gana gerai žinomą ir populiarią PHPMailer biblioteką, kuri leidžia gana paprastai organizuoti laiškų siuntimą per SMTP.
- Kaip išsiųsime atsiliepimų laiškus
- Atsiliepimo formos kūrimas
- PHPMailer bibliotekos įdiegimas
- Sukuriame scenarijų laiškų siuntimui per SMTP
- El. laiškų siuntimo tikrinimas
- Šaltinio failai svetainę
Kaip išsiųsime atsiliepimų laiškus
Prieš pradėdami praktinis darbas Išsiuntę atsiliepimų laiškus, pirmiausia nuspręsime, kaip tai darysime.
Atsiliepimų forma sukurta tam, kad vartotojas galėtų bendrauti su svetainės administratoriumi, kad perteiktų savo pranešimą. Paprastai šią formą sudaro keli laukai ir mygtukas „Pateikti“.
Iš esmės, norint išsiųsti el. laišką, pakanka naudoti tik kelis laukus, kuriuose pateikiama pakankamai informacijos apie vartotoją ir pranešimo turinį, pavyzdžiui:
- „Vardas“ – įvesti žinutės siuntėjo vardą;
- „El. paštas“ – adresui paštu siuntėjas;
- "Pranešimo tema";
- "Pranešimo tekstas".
Nors galite pridėti kitų. Pavyzdžiui, telefono numeris, jei to tikrai reikia.
Mūsų atveju tokie laiškai bus siunčiami svetainės administratoriaus adresu iš tikros pašto dėžutės su įgaliojimu pašto tarnyboje, prie kurios prijungtas mūsų domenas.
Kadangi ankstesniame straipsnyje mes sutelkėme dėmesį į domeno pašto ryšio su „Yandex.Mail“ paslauga patikrinimą, mes išsiųsime el. laišką šiai parinkčiai. Nors tai nėra svarbu. Žemiau matysite tas parinktis, kurias pakeitus galėsite siųsti el. laiškus per Mail.ru pašto serverį.
Kaip tikrą pašto dėžutę, iš kurios bus siunčiami laiškai, naudosime naujai sukurto domeno pašto vartotojo paskyrą, tarkime su adresu [apsaugotas el. paštas]. Ir mes išsiųsime šiuos laiškus pašto dėžutę administratorius [apsaugotas el. paštas], kurį anksčiau sukūrėme ankstesniame straipsnyje.
Taigi, laiško siuntėjas iš atsiliepimų formos bus pašto dėžutė [apsaugotas el. paštas]., o gavėjas - [apsaugotas el. paštas]. Tokiu atveju visa informacija apie vartotoją, atsiuntusį pranešimą su jos turiniu, bus perduota išsiųsto laiško tekste.
Atsiliepimo formos kūrimas
Apsisprendę dėl laiškų siuntimo tvarkos, dabar sukursime atsiliepimų formą, su kuria tai padarysime.
Žemiau yra šios formos HTML kodas, kurį patalpinsime puslapyje „Kontaktai“ (failas kontakty.php straipsnių kataloge).