Php odesílání pošty přes Yandex smtp. Odesílání pošty přes SMTP z lokálního serveru
PHPMailer je velmi pohodlná a oblíbená knihovna pro odeslání e-mailu zprávy z vašeho webu. Tento článek popisuje základní nastavení knihovny a poskytuje příklady kódu pro odesílání zpráv. PHPMailer má ve svém sortimentu snad vše, co můžete od práce s poštou chtít: odesílání různými způsoby prostřednictvím různých serverů, včetně přes smtp, možnost šifrovat a podepisovat vaše dopisy, aby neskončily ve spamu a mnoho dalšího.
Knihovnu PHPMailer si můžete stáhnout z https://github.com/PHPMailer/PHPMailer (tlačítko „Klonovat nebo stáhnout“).
Nejprve se podívám na pár jednoduché příklady aby bylo jasné, jak odesílat e-maily pomocí PHPMailer.
Odesílání e-mailů pomocí funkce mail() pomocí PHPMailer
Pokud chcete posílat e-maily z vašeho hostingu prostřednictvím vašeho poštovní server, pak je vše docela jednoduché a bude vypadat nějak takto:
// Zahrnout knihovnu PHPMailer use PHPMailer\PHPMailer\PHPMailer; vyžadovat "PHPMailer/PHPMailer.php"; // Vytvořte dopis $mail = new PHPMailer(); $mail->setFrom(" [e-mail chráněný]", "Ivan Ivanov"); // od koho (e-mail a jméno) $mail->addAddress(" [e-mail chráněný]", "Vasya Petrov"); // komu (e-mail a jméno) $mail->Subject = "Test"; // předmět dopisu // html text písmena $mail->msgHTML("
Ahoj!
Toto je zkušební dopis.
"); // Odeslat if ($mail->send()) ( echo "Zpráva odeslána!"; ) else ( echo "Chyba: " . $mail->ErrorInfo; )Jak vidíte, vše je celkem jednoduché: připojíme knihovnu, vyplníme od koho, komu, předmět a text dopisu a odešleme. Odesílání e-mailů tímto způsobem bude fungovat pouze z e-mailových adres ve vaší doméně (pokud nejsou propojeny s jinými odesílateli).
Odesílání e-mailů přes SMTP pomocí PHPMailer na příkladu Yandex a Google
Můžete také poslat dopis prostřednictvím jiného poštovního odesílatele, například prostřednictvím Yandex. Kód bude vypadat nějak takto:
// Zahrnout knihovnu PHPMailer use PHPMailer\PHPMailer\PHPMailer; použijte PHPMailer\PHPMailer\SMTP; vyžadovat "PHPMailer/PHPMailer.php"; vyžadovat "PHPMailer/SMTP.php"; // Vytvořte dopis $mail = new PHPMailer(); $mail->isSMTP(); // Odeslání přes SMTP $mail->Host = "smtp.yandex.ru"; // adresa serveru SMTP $mail->SMTPAuth = true; // Povolení ověřování SMTP $mail->Username = "login"; // vaše uživatelské jméno (bez domény a @) $mail->Password = "heslo"; // vaše heslo $mail->SMTPSecure = "ssl"; // šifrování ssl $mail->Port = 465; // port připojení $mail->setFrom(" [e-mail chráněný]", "Ivan Ivanov"); // od koho $mail->addAddress(" [e-mail chráněný]", "Vasya Petrov"); // komu $mail->Subject = "Test"; $mail->msgHTML("
Ahoj!
Toto je zkušební dopis.
"); // Odeslat if ($mail->send()) ( echo "Zpráva odeslána!"; ) else ( echo "Chyba: " . $mail->ErrorInfo; )Odesílání e-mailů přes Google má jednu výhradu: musíte google účet povolit přístup k nedůvěryhodným aplikacím. Chcete-li to provést, musíte přejít na svůj účet https://myaccount.google.com, přejděte na zabezpečení, přejděte do části „Nedůvěryhodné aplikace, které mají přístup k vašemu účtu“ a tam se přepněte na „Povoleno“. V době psaní tohoto článku je tato stránka https://myaccount.google.com/u/0/lesssecureapps.
$mail->Host = "smtp.gmail.com"; // adresa serveru SMTP $mail->SMTPAuth = true; // Povolení ověřování SMTP $mail->Username = "login"; // vaše uživatelské jméno $mail->Password = "heslo"; // vaše heslo $mail->SMTPSecure = "ssl"; // šifrování ssl $mail->Port = 465; // port připojení
Pokud program pro odesílání přes smtp spouštíte poprvé, pak je vhodné před odesláním dodatečně použít $mail->SMTPDebug = 1; přijímat všechny zprávy od klienta a smtp serveru, tzn. Celý proces připojení, autorizace atd. se zobrazí na obrazovce, což je velmi užitečné pro ladění vašeho programu.
Odeslání e-mailu s přílohou pomocí PHPMailer
Zde je vše docela jednoduché, stačí použít metodu přidat Přílohu. Uvedu příklad a zároveň předvedu několik dalších další funkce:
// Zahrnout knihovnu PHPMailer use PHPMailer\PHPMailer\PHPMailer; použijte PHPMailer\PHPMailer\Exception; vyžadovat "PHPMailer/PHPMailer.php"; vyžadovat "PHPMailer/Exception.php"; // Vytvořte dopis $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [e-mail chráněný]", "Ivan Ivanov"); // od koho $mail->addReplyTo(" [e-mail chráněný]", "Ivan Ivanov"); // zpáteční adresa $mail->addAddress(" [e-mail chráněný]", "Vasya Petrov"); // komu $mail->Subject = "Test"; // předmět $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // získat "tělo" dopisu ze souboru $mail->AltBody = "Plain text letter" // prostý text dopisu, pokud klient nepodporuje html $mail->addAttachment("my_file.txt" // připojit jeden soubor $mail-); >addAttachment("phpmailer) .jpg" // připojte druhý soubor // Odeslat if ($mail->send()) ( echo "Zpráva odeslána!"; ) else ( echo "Chyba: " . $mail- >Info o chybě);
Pomocí addAddress můžete přidat více adres příjemců. Nebo v případě potřeby můžete naopak pomocí metody vymazat všechny adresy příjemců clearAddresses(). Všechny přílohy můžete vymazat pomocí clearAttachments().
Můžete také použít PřidatEmbeddedImage přidat k emailu přílohu (obvykle obrázek), která je určena pro použití v html kódu a nebude dostupná ke stažení. Příklad použití obrázku v dopise, který není k dispozici ke stažení:
// Zahrnout knihovnu PHPMailer use PHPMailer\PHPMailer\PHPMailer; vyžadovat "PHPMailer/PHPMailer.php"; //Vytvořte dopis $mail = new PHPMailer; $mail->JeHTML(true); $mail->setFrom(" [e-mail chráněný]", "Ivan Ivanov"); $mail->addAddress(" [e-mail chráněný]", "Vasya Petrov"); $mail->Subject = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "
Obrázek v html kódu
"; // Odeslat $mail->send();Takže můžete poslat dopisy s obrázky, které jsou pouze v těle dopisu, ale nelze je stáhnout jako přílohu. Tyto obrázky lze použít kdekoli v html kódu dopisu, stačí zadat cid obrázku, který jste použili v AddEmbeddedImage místo url adresy.
Odesílání podepsaných a šifrovaných e-mailů přes PHPMailer
Ve výchozím nastavení PHPMailer šifruje všechny odeslané zprávy. Šifrování e-mailů můžete zakázat pouze při odesílání e-mailů přes SMTP pomocí kódu:
$mail->SMTPSecure = false; $mail->SMTPAutoTLS = false;
Na podepište dopis podpisem DKIM, musíte provést několik kroků:
- Generujte soukromé a veřejné klíče pro vaši doménu
- Přidejte záznam DNS pro doménu TXT s veřejným klíčem
- Před odesláním e-mailu nakonfigurujte podpis DKIM v PHPMaileru
Nyní popíšu každý krok trochu podrobněji.
Generování soukromých a veřejných klíčů
Pokud máte hosting Linux a máte přístup k Shell, pak je generování klíčových souborů stejně snadné jako loupání hrušek, stačí spustit 2 příkazy s vašimi běžnými uživatelskými právy:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pout
resp. test-private.pem A test-public.pem- jedná se o soukromé a veřejné klíče. Musíte je uložit do složky, která nebude přístupná návštěvníkům webu ani nikomu jinému kromě vás.
Pokud není možné provádět příkazy v shellu, pak pro generování soukromých a veřejných klíčů a jejich uložení do souborů můžete použít následující kód:
$domain = "test.ru"; // vaše doména $privatekeyfile = "test-private.pem"; // název souboru, do kterého bude zapsán soukromý klíč $publickeyfile = "test-public.pem"; // název souboru, do kterého bude zapsán veřejný klíč if (file_exists($privatekeyfile)) ( echo "
Použití existujících klíčů
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Vytvořte klíče"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file =_vate_keypks $prily); ($ pk );
Soukromý klíč (nechte tento soukromý!):
" . $privatekey .""; echo"
Veřejný klíč:
". $publickey."";
Pozor! Nezapomeňte se ujistit, že složka, kam budou soubory uloženy, je zapisovatelná.
Přidání DNS záznamu s veřejným klíčem
DNS záznam je nutný, aby poštovní servery, které budou přijímat vaše dopisy, mohly ověřit podpis na dopise přečtením DNS záznamu vaší domény. Obvykle můžete přidat záznam DNS v ovládacím panelu vaší domény nebo v ovládacím panelu hostitele. Pokud nevíte, jak přidat záznam, obraťte se na podporu poskytovatele hostingu.
Musíte přidat záznam DNS takto:
Název položky: mail._domainkey.test.ru. (na konci je tečka ".")
TTL: 3600 (nebo podle toho, co bude výchozí)
Typ příspěvku: TXT
Význam: v=DKIM1; h=sha256; t=s; p=VÁŠ_VEŘEJNÝ_KLÍČ
V názvu položky test.ru musí být nahrazen názvem vaší domény. Nahradíte slova „VÁŠ_PUBLIC_KEY“ textem, který jste obdrželi v předchozím kroku za „Veřejný klíč“, bez „-----BEGIN PUBLIC KEY-----“ a „-----END PUBLIC KEY- -- --“, pouze samotný klíč. V tomto případě jsou potřeba všechny klíčové linie zřetězit do jedné dlouhé řady aby nedocházelo k zalomení řádků.
Nastavení podpisu DKIM v PHPMailer a odeslání e-mailu
Nyní zbývá jen provést pár nastavení PHPMaileru před odesláním dopisu a bude podepsán. Myslím, že následující příklad vše objasní:
// Zahrnout knihovnu use PHPMailer\PHPMailer\PHPMailer; vyžadovat "PHPMailer/PHPMailer.php"; // Vytvořte dopis $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [e-mail chráněný]"); $mail->addAddress(" [e-mail chráněný]"); $mail->Subject = "Toto je test"; $mail->msgHTML("
Toto je test
"); // Nastavení podpisu DKIM $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // Odeslat $ mail- >odeslat();Samozřejmě test.ru měli byste změnit název své domény a test-private.pem na úplnou cestu a název souboru soukromého klíče, který byl vytvořen ve fázi generování klíče.
Nyní budou vaše e-maily odeslané přes PHPMailer podepsané DKIM vaším soukromým klíčem.
Aby měl určitý web možnost pracovat efektivně a produktivně, mělo by se k jeho tvorbě přistupovat co nejzodpovědněji a nejpečlivěji. Zvláštní pozornost si zaslouží výběr systému, který bude použit k vytvoření internetového obchodu. Faktem je, že komerční platforma specializovaná na prodej zboží nebo služeb musí umožňovat implementaci veškeré potřebné funkcionality a být snadno použitelná, a to jak pro správce podílející se na údržbě a plnění stránek, tak pro klienty internetových obchodů. Mnoho lidí a firem, kteří stojí před otázkou výběru vhodného CMS pro sebe, analyzuje, zda zvolit Magento nebo OkayCMS. Porovnejme vlastnosti a možnosti těchto webových motorů.
Při práci na vlastním webu bude muset člověk nebo firma vynaložit velké úsilí – pouze v tomto případě můžete počítat s pozitivní výsledky a získat skutečně účinný nástroj. Jednou ze zásadních otázek, kterou je nutné vyřešit ještě před zahájením tvorby webu, bude, jak se rozhodnout pro nejvhodnější variantu CMS. Dále porovnáme dva CMS: Joomla nebo OkayCMS a věnujeme pozornost funkcím každého z nich.
Mít vlastní webové stránky je jedním ze základních požadavků pro efektivní a úspěšně fungující podnikání. Statistiky jasně ukazují nárůst počtu nákupů různého zboží a objednávek služeb přes internet. Když to vezmeme v úvahu, většina komerčních společností si již uvědomuje nutnost mít vlastní webové stránky. Pouhá skutečnost, že máme internetový zdroj, však nestačí k tomu, abychom mohli počítat s jeho efektivitou, ziskovostí a očekávanými obchodními přínosy.
Při přípravě na vytvoření vlastního webu nebo otevření internetového obchodu musíte vzít v úvahu a analyzovat mnoho problémů a také řešit různé problémy. Pouze v tomto případě můžete počítat s tím, že váš projekt přinese pozitivní výsledky a dokáže plně naplnit vaše očekávání. Mezi různými problémy souvisejícími s rozvojem internetového obchodu si zvláštní pozornost zaslouží otázka výběru CMS. Abychom vám usnadnili rozhodování o optimálním motoru pro vás
Při plánování vytvoření vlastního webu pro budoucí internetový obchod stojí poměrně velké množství lidí a dokonce i společností specializujících se na prodej před nelehkou a nesmírně důležitou volbou: který ze stávajících CMS zvolit. Pokud přemýšlíte, co si vybrat: PrestaShop nebo OkayCMS, doporučujeme vám přečíst si tento článek, ve kterém porovnáme tyto dva systémy pro tvorbu internetových stránek, zejména internetových obchodů.
2019-08-05
Dobrý den, milý návštěvníku!
Odpusťte mi prosím zpoždění s aktualizací blogu. Existuje pro to ale zcela srozumitelné vysvětlení. Koneckonců léto, dača, hosté, les, voda a mnoho dalšího, což mi nedovolilo popasovat se s tvorbou webu. Ale teď jsem se trochu uvolnil, hosté odešli a myslím, že teď tomu budu určitě věnovat patřičnou pozornost.
Poté, co jsme v minulém článku připojili poštu naší domény k jedné z poštovních služeb, nyní se podívejme, jak můžete odesílat e-maily z webu. Navíc tak, aby naše dopisy nekončily ve SPAMu, ale byly spolehlivě, s vysokou mírou pravděpodobnosti, doručeny našim příjemcům.
Obecně je v PHP zabudovaná funkce mail() pro odesílání dopisů. Je však třeba poznamenat, že i přes jednoduchost této metody (v tomto případě pro odesílání dopisů stačí zadat pouze jeden řádek kódu s určitými parametry) má použití této možnosti významnou nevýhodu spojenou s problémem SPAM .
Faktem je, že anti-SPAM filtry poštovních serverů na straně příjemce skutečně neupřednostňují dopisy zasílané prostřednictvím funkce mail(). A ve většině případů jsou takové zprávy filtrovány nebo dokonce smazány, než se dostanou k adresátovi.
A aby se takové případy co nejvíce eliminovaly, obvykle se používá další možnost, kdy se dopisy posílají, jako by to dělala poštovní služba třetí strany.
Tato metoda se nazývá odesílání pošty přes SMTP s autorizací. Na který se dnes podíváme na příkladu odeslání formuláře zpětná vazba. Navíc k tomu využijeme poměrně známou a oblíbenou knihovnu PHPMailer, která vám umožní celkem jednoduše organizovat odesílání dopisů přes SMTP.
- Jak budeme posílat dopisy se zpětnou vazbou
- Vytvoření formuláře zpětné vazby
- Instalace knihovny PHPMailer
- Vytvoříme skript pro odesílání pošty přes SMTP
- Kontrola odesílání e-mailů
- Zdrojové soubory místo
Jak budeme posílat dopisy se zpětnou vazbou
Než začnete praktická práce Po odeslání dopisů se zpětnou vazbou se nejprve rozhodneme, jak to uděláme.
Formulář zpětné vazby je navržen tak, aby uživateli umožnil komunikovat s administrátorem webu a předat mu jeho zprávu. Tento formulář se obvykle skládá z několika polí a tlačítka „Odeslat“.
K odeslání e-mailu v zásadě stačí použít pouze několik polí, která poskytují dostatečné informace o uživateli a obsahu zprávy, jako například:
- "Jméno" - pro zadání jména odesílatele zprávy;
- "E-mail" - pro adresu e-mail odesílatel;
- "Předmět zprávy";
- "Text zprávy".
I když můžete přidat další. Například telefonní číslo, pokud je to opravdu nutné.
V našem případě budou takové dopisy zasílány na adresu správce webu ze skutečné poštovní schránky s autorizací na poštovní službě, ke které je naše doména připojena.
Jelikož jsme se v předchozím článku zaměřili na kontrolu připojení doménové pošty ke službě Yandex.Mail, budeme posílat poštu pro tuto možnost. I když to není důležité. Níže uvidíte ty možnosti, které vám po změně umožní odesílat e-maily přes poštovní server Mail.ru.
Jako skutečnou schránku, ze které se budou odesílat dopisy, použijeme účet nově vytvořeného doménového uživatele pošty, řekněme s adresou [e-mail chráněný]. A my tyto dopisy pošleme poštovní schránka správce [e-mail chráněný], kterou jsme dříve vytvořili v předchozím článku.
Odesílatelem dopisu z formuláře zpětné vazby bude tedy poštovní schránka [e-mail chráněný]., a příjemce - [e-mail chráněný]. V tomto případě budou v těle odeslaného dopisu přeneseny všechny informace o uživateli, který zprávu odeslal s jejím obsahem.
Vytvoření formuláře zpětné vazby
Poté, co jsme se rozhodli pro postup zasílání dopisů, nyní vytvoříme formulář zpětné vazby, pomocí kterého to uděláme.
Níže je uveden HTML kód tohoto formuláře, který umístíme na stránku "Kontakty" (soubor kontakty.php v adresáři článků).