PHP slanje pošte putem Yandex smtp. Slanje pošte putem SMTP-a sa lokalnog servera
PHPMailer je veoma zgodna i popularna biblioteka za slanje e-pošte poruke sa vaše stranice. Ovaj članak opisuje osnovne postavke biblioteke i daje primjere koda za slanje poruka. PHPMailer u svom asortimanu ima možda sve što možete poželjeti od rada sa poštom: slanje na različite načine, preko različitih servera, uključujući putem smtp-a, mogućnost šifriranja i potpisivanja vaših pisama kako ne bi završila u neželjenoj pošti i još mnogo toga.
PHPMailer biblioteku možete preuzeti sa https://github.com/PHPMailer/PHPMailer (dugme "Kloniraj ili preuzmi").
Prvo ću pogledati par jednostavni primjeri da bude jasno kako slati e-poštu koristeći PHPMailer.
Slanje e-pošte putem funkcije mail() koristeći PHPMailer
Ako želite da šaljete e-poštu sa svog hostinga putem vašeg mail server, onda je sve prilično jednostavno i izgledat će otprilike ovako:
// Uključuje PHPMailer biblioteku koristeći PHPMailer\PHPMailer\PHPMailer; zahtijevaju "PHPMailer/PHPMailer.php"; // Kreirajte pismo $mail = new PHPMailer(); $mail->setFrom(" [email protected]", "Ivan Ivanov"); // od koga (e-mail i ime) $mail->addAddress(" [email protected]", "Vasya Petrov"); // kome (e-mail i ime) $mail->Subject = "Test"; // predmet pisma // html tekst slova $mail->msgHTML("
Zdravo!
Ovo je probno pismo.
"); // Pošalji if ($mail->send()) ( echo "Poruka je poslata!"; ) else ( echo "Greška: " . $mail->ErrorInfo; )Kao što vidite, sve je prilično jednostavno: povezujemo biblioteku, popunjavamo od koga, kome, temu i tekst pisma i šaljemo ga. Slanje e-pošte na ovaj način funkcionirat će samo s adresa e-pošte na vašoj domeni (osim ako nisu povezane s drugim pošiljateljima pošte).
Slanje e-pošte putem SMTP-a koristeći PHPMailer na primjeru Yandex-a i Google-a
Pismo možete poslati i putem druge pošte, na primjer putem Yandex. Kod će izgledati otprilike ovako:
// Uključuje PHPMailer biblioteku koristeći PHPMailer\PHPMailer\PHPMailer; koristite PHPMailer\PHPMailer\SMTP; zahtijevaju "PHPMailer/PHPMailer.php"; zahtijevaju "PHPMailer/SMTP.php"; // Kreirajte pismo $mail = new PHPMailer(); $mail->isSMTP(); // Slanje putem SMTP-a $mail->Host = "smtp.yandex.ru"; // Adresa SMTP servera $mail->SMTPAuth = true; // Omogući SMTP autentifikaciju $mail->Username = "login"; // vaše korisničko ime (bez domene i @) $mail->Password = "password"; // vaša lozinka $mail->SMTPSecure = "ssl"; // ssl enkripcija $mail->Port = 465; // priključak za vezu $mail->setFrom(" [email protected]", "Ivan Ivanov"); // od koga $mail->addAddress(" [email protected]", "Vasya Petrov"); // kome $mail->Subject = "Test"; $mail->msgHTML("
Zdravo!
Ovo je probno pismo.
"); // Pošalji if ($mail->send()) ( echo "Poruka je poslata!"; ) else ( echo "Greška: " . $mail->ErrorInfo; )Slanje e-pošte putem Google-a ima jedno upozorenje: morate google račun dozvolite pristup nepouzdanim aplikacijama. Da biste to učinili, morate otići na svoj račun https://myaccount.google.com, otići na sigurnost, otići u odjeljak "Nepouzdane aplikacije koje imaju pristup vašem računu" i tamo prebaciti na "Dozvoljeno". U vrijeme pisanja, ova stranica je https://myaccount.google.com/u/0/lesssecureapps.
$mail->Host = "smtp.gmail.com"; // Adresa SMTP servera $mail->SMTPAuth = true; // Omogući SMTP autentifikaciju $mail->Username = "login"; // vaše korisničko ime $mail->Password = "password"; // vaša lozinka $mail->SMTPSecure = "ssl"; // ssl enkripcija $mail->Port = 465; // priključni port
Ako prvi put pokrećete program za slanje putem smtp-a, preporučljivo je da ga dodatno koristite prije slanja $mail->SMTPDebug = 1; primati sve poruke od klijenta i smtp servera, tj. Cijeli proces povezivanja, autorizacije itd. će biti prikazan na ekranu, što je vrlo korisno za otklanjanje grešaka u vašem programu.
Slanje e-pošte sa prilogom koristeći PHPMailer
Ovdje je sve prilično jednostavno, samo trebate koristiti metodu addAttachment. Navest ću primjer i istovremeno pokazati još nekoliko dodatne funkcije:
// Uključuje PHPMailer biblioteku koristeći PHPMailer\PHPMailer\PHPMailer; koristite PHPMailer\PHPMailer\Exception; zahtijevaju "PHPMailer/PHPMailer.php"; zahtijevaju "PHPMailer/Exception.php"; // Kreirajte pismo $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email protected]", "Ivan Ivanov"); // od koga $mail->addReplyTo(" [email protected]", "Ivan Ivanov"); // povratna adresa $mail->addAddress(" [email protected]", "Vasya Petrov"); // kome $mail->Subject = "Test"; // predmet $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // dobijemo "tijelo" pisma iz datoteke $mail->AltBody = "Pismo običnog teksta" ako klijent ne podržava html $mail->addAttachment("my_file.txt"); >addAttachment("phpmailer) .jpg" // priložite drugu datoteku // Pošalji if ($mail->send()) ( echo "Poruka je poslata!"; ) else ( echo "Greška: " . $mail-). >ErrorInfo )
Možete dodati više adresa primatelja koristeći addAddress. Ili, ako je potrebno, možete, naprotiv, obrisati sve adrese primatelja pomoću metode clearAddresses(). Možete izbrisati sve priloge koristeći clearAttachments().
Također možete koristiti AddEmbeddedImage da dodate prilog (obično sliku) u e-poštu, koji je namijenjen za korištenje u html kodu i neće biti dostupan za preuzimanje. Primjer korištenja slike u pismu koje nije dostupno za preuzimanje:
// Uključuje PHPMailer biblioteku koristeći PHPMailer\PHPMailer\PHPMailer; zahtijevaju "PHPMailer/PHPMailer.php"; //Kreiraj pismo $mail = novi PHPMailer; $mail->IsHTML(true); $mail->setFrom(" [email protected]", "Ivan Ivanov"); $mail->addAddress(" [email protected]", "Vasya Petrov"); $mail->Subject = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "
Slika u html kodu
"; // Pošalji $mail->send();Tako da možete poslati slova sa slikama, koji se nalaze samo u tijelu pisma, ali se ne mogu preuzeti kao prilog. Ove slike se mogu koristiti bilo gdje u html kodu pisma, samo trebate navesti cid slike koji ste koristili u AddEmbeddedImage umjesto url adrese.
Slanje potpisane i šifrirane e-pošte putem PHPMailera
Po defaultu, PHPMailer šifrira sve poslate poruke. Enkripciju e-pošte možete onemogućiti samo kada šaljete e-poštu putem SMTP-a koristeći kod:
$mail->SMTPSecure = lažno; $mail->SMTPAutoTLS = netačno;
To potpišite pismo DKIM potpisom, potrebno je izvršiti nekoliko koraka:
- Generirajte privatne i javne ključeve za svoju domenu
- Dodajte DNS zapis za TXT domen sa javnim ključem
- Konfigurišite DKIM potpis u PHPMailer-u prije slanja e-pošte
Sada ću malo detaljnije opisati svaki korak.
Generisanje privatnih i javnih ključeva
Ako imate Linux hosting i imate pristup Shell-u, onda je generiranje ključnih datoteka jednako jednostavno kao i ljuštenje krušaka, trebate samo pokrenuti 2 naredbe sa vašim normalnim korisničkim pravima:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
odnosno test-private.pem I test-public.pem- ovo su privatni i javni ključevi. Morate ih sačuvati u folderu koji neće biti dostupan posjetiteljima stranice ili bilo kome drugom osim vama.
Ako nije moguće izvršiti naredbe u ljusci, tada za generiranje privatnih i javnih ključeva i njihovo spremanje u datoteke možete koristiti sljedeći kod:
$domain = "test.ru"; // vaš domen $privatekeyfile = "test-private.pem"; // ime datoteke u kojoj će biti napisan privatni ključ $publickeyfile = "test-public.pem"; // ime datoteke u koju će biti upisan javni ključ if (file_exists($privatekeyfile)) ( echo "
Korištenje postojećih ključeva
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Kreirajte ključeve"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file _get_details($pk $publickey = $publickey["key"] ($publickeyfile, $privatekey = file_get_contents($privatekeyfile);
Privatni ključ (čuvajte ovo privatnim!):
" . $privatekey .""; eho"
Javni ključ:
" . $publickey ."";
Pažnja! Ne zaboravite da se uverite da je u fasciklu u koju će datoteke biti sačuvane moguće pisati.
Dodavanje DNS zapisa sa javnim ključem
DNS zapis je potreban kako bi serveri e-pošte koji će primati vaša pisma mogli provjeriti potpis na pismu čitanjem DNS zapisa vašeg domena. Obično možete dodati DNS zapis na kontrolnu tablu svoje domene ili na kontrolnu tablu za hosting. Ako ne znate kako dodati unos, kontaktirajte podršku vašeg hosting provajdera.
Morate dodati DNS zapis ovako:
Naziv unosa: mail._domainkey.test.ru. (na kraju se nalazi tačka ".")
TTL: 3600 (ili šta god će biti zadano)
Vrsta objave: TXT
Značenje: v=DKIM1; h=sha256; t=s; p=VAŠ_JAVNI_KLJUČ
U nazivu unosa test.ru mora biti zamijenjen vašim imenom domene. Riječi "VAŠ_PUBLIC_KEY" zamjenjujete tekstom koji ste primili u prethodnom koraku nakon "Javni ključ", bez "-----POČETNI JAVNI KLJUČ-----" i "-----KRAJ JAVNI KLJUČ- -- --", samo sam ključ. U ovom slučaju su potrebne sve ključne linije spojiti u jednu dugu liniju tako da nema preloma redova.
Postavljanje DKIM potpisa u PHPMailer-u i slanje e-pošte
Sada ostaje samo da napravite nekoliko postavki PHPMailera prije slanja pisma i ono će biti potpisano. Mislim da će sljedeći primjer sve razjasniti:
// Uključuje biblioteku koristeći PHPMailer\PHPMailer\PHPMailer; zahtijevaju "PHPMailer/PHPMailer.php"; // Kreirajte pismo $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email protected]"); $mail->addAddress(" [email protected]"); $mail->Subject = "Ovo je test"; $mail->msgHTML("
Ovo je test
"); // Postavljanje DKIM potpisa $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // Pošalji $ mail- >send();Naravno test.ru trebali biste promijeniti u ime svoje domene i test-private.pem na punu putanju i naziv datoteke privatnog ključa koja je kreirana u fazi generiranja ključa.
Sada će vaše e-poruke poslane putem PHPMailera biti DKIM potpisane vašim privatnim ključem.
Da bi određena web stranica imala mogućnost da radi efikasno i produktivno, njenoj izradi treba pristupiti što odgovornije i pažljivije. Posebnu pažnju zaslužuje izbor sistema koji će se koristiti za kreiranje internet prodavnice. Činjenica je da komercijalna platforma specijalizirana za prodaju robe ili usluga mora omogućiti implementaciju svih potrebnih funkcionalnosti i biti laka za korištenje, kako za administratore koji se bave održavanjem i popunjavanjem stranica, tako i za klijente internetskih trgovina. Mnogi ljudi i kompanije koji se susreću sa pitanjem odabira odgovarajućeg CMS-a za sebe analiziraju da li odabrati Magento ili OkayCMS. Uporedimo karakteristike i mogućnosti ovih mehanizama za web stranice.
Kada radite na vlastitoj web stranici, osoba ili kompanija morat će uložiti mnogo truda - samo u ovom slučaju možete računati na pozitivni rezultati i dobijanje zaista efikasnog alata. Jedno od osnovnih pitanja koje se mora riješiti čak i prije početka izrade web stranice bit će kako se odlučiti za najprikladniju CMS opciju. Zatim ćemo uporediti dva CMS-a: Joomla ili OkayCMS i obratiti pažnju na karakteristike svakog od njih.
Posjedovanje vlastite web stranice jedan je od osnovnih zahtjeva za efikasno i uspješno poslovanje. Statistika jasno ukazuje na povećanje broja kupovina raznih roba i narudžbi usluga putem interneta. Uzimajući ovo u obzir, većina komercijalnih kompanija već je svjesna potrebe za vlastitim web stranicama. Međutim, sama činjenica posedovanja Internet resursa nije dovoljna da se računa na njegovu efikasnost, profitabilnost i očekivane poslovne koristi.
Kada se pripremate za kreiranje vlastite web stranice ili otvaranje online trgovine, morate uzeti u obzir i analizirati mnoge probleme, kao i riješiti različite probleme. Samo u ovom slučaju možete računati na činjenicu da će vaš projekt donijeti pozitivne rezultate i moći u potpunosti ispuniti vaša očekivanja. Među raznim pitanjima vezanim za razvoj online trgovine, pitanje odabira CMS-a zaslužuje posebnu pažnju. Da vam olakšam odlučivanje o optimalnom motoru za sebe, iznutra
Kada planiraju kreirati vlastitu web stranicu za buduću internet prodavnicu, prilično veliki broj ljudi, pa čak i kompanija specijaliziranih za prodaju, suočeni su s teškim i izuzetno važnim izborom: koji od postojećih CMS-a izabrati. Ako razmišljate šta da odaberete: PrestaShop ili OkayCMS, predlažemo da pročitate ovaj članak, u kojem ćemo uporediti ova dva sistema za kreiranje internet stranica, posebno online prodavnica.
2019-08-05
Zdravo, dragi posjetitelju!
Oprostite mi na kašnjenju u ažuriranju bloga. Ali za to postoji sasvim razumljivo objašnjenje. Uostalom, ljeto, dacha, gosti, šuma, voda i još mnogo toga, što mi nije omogućilo da se pozabavim pitanjima izrade web stranice. Ali sad sam se malo oslobodio, gosti su otišli i mislim da ću sada sigurno moći da obratim dužnu pažnju na ovo.
Dakle, nakon što smo u prošlom članku povezali poštu našeg domena sa jednim od servisa pošte, sada da vidimo kako možete slati e-poštu sa stranice. Štaviše, na način da naša pisma ne završe u SPAM-u, već se pouzdano, s velikim stepenom vjerovatnoće, dostavljaju našim primaocima.
Generalno, postoji ugrađena funkcija mail() za slanje pisama u PHP-u. Ali treba napomenuti da uprkos jednostavnosti ove metode (u ovom slučaju, za slanje pisama dovoljno je navesti samo jednu liniju koda sa određenim parametrima), upotreba ove opcije ima značajan nedostatak povezan sa problemom SPAM-a. .
Činjenica je da anti-SPAM filteri mail servera na strani primaoca ne favoriziraju pisma poslana putem funkcije mail(). I u većini slučajeva takve poruke se filtriraju ili čak brišu prije nego što stignu do primatelja.
A kako bi se takvi slučajevi što je više moguće eliminisali, obično se koristi druga opcija u kojoj se pisma šalju kao da ih radi poštanska usluga treće strane.
Ova metoda se zove slanje pošte putem SMTP-a s autorizacijom. Što ćemo danas pogledati na primjeru podnošenja obrasca povratne informacije. Štaviše, za ovo ćemo koristiti prilično poznatu i popularnu biblioteku PHPMailer, koja vam omogućava da jednostavno organizirate slanje pisama putem SMTP-a.
- Kako ćemo slati povratne informacije
- Kreiranje obrasca za povratne informacije
- Instaliranje PHPMailer biblioteke
- Kreiramo skriptu za slanje pošte putem SMTP-a
- Provjeravam slanje e-pošte
- Izvorni fajlovi site
Kako ćemo slati povratne informacije
Prije nego počnete praktičan rad Nakon slanja povratnih pisama, prvo ćemo odlučiti kako ćemo to učiniti.
Obrazac za povratne informacije je dizajniran da omogući korisniku da komunicira s administratorom stranice kako bi prenio svoju poruku. Obično se ovaj obrazac sastoji od nekoliko polja i dugmeta „Pošalji“.
U principu, za slanje e-pošte dovoljno je koristiti samo nekoliko polja koja pružaju dovoljno informacija o korisniku i sadržaju poruke, kao što su:
- "Ime" - za unos imena pošiljaoca poruke;
- "E-mail" - za adresu email pošiljalac;
- "Predmet poruke";
- "Tekst poruke".
Iako možete dodati i druge. Na primjer, broj telefona, ako je to zaista neophodno.
U našem slučaju, takva pisma će biti poslana na adresu administratora stranice iz stvarnog poštanskog sandučeta s autorizacijom na mail servisu na koji je naša domena povezana.
Budući da smo se u prethodnom članku fokusirali na provjeru povezanosti pošte domene sa servisom Yandex.Mail, poslat ćemo poštu za ovu opciju. Iako ovo nije važno. Ispod ćete vidjeti one opcije koje će vam, kada se promijene, omogućiti slanje e-pošte putem Mail.ru servera pošte.
Kao pravi poštanski sandučić iz kojeg će se slati pisma, koristićemo nalog novokreiranog korisnika pošte domene, recimo sa adresom [email protected]. I mi ćemo poslati ova pisma poštansko sanduče administrator [email protected], koji smo prethodno kreirali u prethodnom članku.
Tako će pošiljalac pisma iz obrasca za povratne informacije biti poštanski sandučić [email protected]., a primalac - [email protected]. U tom slučaju, sve informacije o korisniku koji je poslao poruku sa njenim sadržajem bit će prenesene u tijelo poslanog pisma.
Kreiranje obrasca za povratne informacije
Nakon što smo se odlučili za proceduru slanja pisama, sada ćemo kreirati obrazac za povratne informacije sa kojim ćemo to i učiniti.
Ispod je HTML kod za ovaj obrazac, koji ćemo postaviti na stranicu "Kontakti" (datoteka kontakty.php u direktoriju članaka).