Skip to content

Jak posílat e-maily ze skriptu PHP pomocí ověřování SMTP

17 de Červen de 2021
GettyImages 697538583 34e5976bad0a422b836b20a3221376e0

PHP pošta() funkce je jednoduchá, snadno použitelná a funguje skvěle, ale je také extrémně nepružná. Pokud chcete určit skript, který má skript použít, nebo použít ověřování SMTP, máte smůlu. Chcete-li překonat tato omezení a odeslat e-mail ze svého skriptu PHP pomocí ověřování SMTP, budete se muset obrátit na třídu PHP, jako je PHPmailer nebo balíček PEAR Mail.

Odesílání e-mailů pomocí funkce PHP Mail

Když používáte PHP pošta() funkce, můžete poslat e-mail přímo z vašeho webového serveru, nikoli z poštovního serveru. Pokud máte poštovní server prostřednictvím svého webového hostitele nebo dokonce poštovní server s jiným hostitelem, je obvykle lepší místo toho posílat poštu. Problém je v tom, že PHP pošta() funkce neposkytuje žádný vestavěný způsob odesílání pošty přes SMTP. Pokud chcete tuto funkci otevřít, budete si muset nainstalovat další třídu PHP. Zde jsou některé možnosti, které fungují:

  • PHPmailer
  • SwiftMailer
  • Zend_Mail
  • XpertMailer
  • Hrušková pošta

Ukážeme vám, jak používat PEAR Mail, ale můžete použít jakoukoli třídu, která podporuje SMTP.

Pokud váš webový hostitel již má nainstalovanou jednu nebo více z těchto tříd, pravděpodobně má výukové programy týkající se vaší situace. Pokud ano, pokračujte a použijte třídu, ke které máte přístup. Tuto metodu použijte, pouze pokud používáte PHP k vytváření vlastních uživatelských formulářů pošty. Pokud používáte systém pro správu obsahu (CMS), jako je WordPress, místo pokusu o vytvoření vlastního vyhledejte zásuvný modul nebo vestavěné funkce pro odesílání pošty přes SMTP.

Jak používat PEAR k odesílání pošty přes SMTP

  1. Ujistěte se, že je vaše doména namířena na záznamy Mail Exchange (MX) hostitele vašeho poštovního serveru, a poznamenejte si název svého poštovního serveru. Může to být například mail.yourdomain.net nebo smtp.yourdomain.net.

  2. Zkontrolujte, zda je PEAR Mail na vašem poštovním serveru již nainstalován.

  3. Pokud PEAR Mail není nainstalován, požádejte svého hostitele webové pošty o konkrétní pokyny k jeho instalaci.

  4. Po instalaci aplikace PEAR Mail upravte jeden z ukázkových souborů PHP v následujících částech tak, aby vyhovoval vašim potřebám.

Příklad PEAR Mail PHP skript pro poštu SMTP

Pokud chcete, můžete si vytvořit svůj vlastní skript od začátku nebo upravit následující příklad podle svých představ. Nezapomeňte do hostitelské proměnné zadat název svého webového poštovního serveru a do polí pro uživatelské jméno a heslo použijte své přihlašovací údaje pro svého hostitele webové pošty. require_once „Mail.php“;
$ from = „Jméno odesílatele „;
$ to = „Jméno příjemce „;
$ subject = „Předmět řádku zde:“;
$ body = „libovolná zpráva, kterou chcete“;
$ host = „yourmailhost.com“;
$ username = „vaše uživatelské jméno nebo e-mail“;
$ heslo = „vaše heslo“;
$ headers = array (‚From‘ => $ from,
‚To‘ => $ to,
‚Subject‘ => $ subject);
$ smtp = Mail :: factory (‚smtp‘,
array (‚host‘ => $ host,
‚auth‘ => true,
‚username‘ => $ username,
‚password‘ => $ heslo));
$ mail = $ smtp-> odeslat ($ do, $ záhlaví, $ tělo);
if (PEAR :: isError ($ mail)) {
echo („

„. $ mail-> getMessage (). „

„);
} else {
echo („

Zpráva úspěšně odeslána!

„);
}
?>

Ukázkový skript PEAR Mail PHP pro ověřování SMTP a šifrování SSL

Pokud chcete použít ověřování SMTP a šifrování SSL, budete muset v předchozím příkladu provést několik úprav. Budete muset nasměrovat hostitelskou proměnnou na váš poštovní server SSL a také zadat číslo portu, jako je 25, 465, 587, 2525 nebo 8025. Pokud nemůžete přijít na to, ke kterému portu chcete získat další informace, obraťte se na svého hostitele webové pošty. použití. require_once „Mail.php“;
$ from = „Jméno odesílatele „;
$ to = „Jméno příjemce „;
$ subject = „Předmět řádku zde:“;
$ body = „libovolná zpráva, kterou chcete“;
$ host = „ssl: //yourmailhost.com“;
$ port = „587“;
$ username = „vaše uživatelské jméno nebo e-mail“;
$ heslo = „vaše heslo“;
$ headers = array (‚From‘ => $ from,
‚To‘ => $ to,
‚Subject‘ => $ subject);
$ smtp = Mail :: factory (‚smtp‘,
array (‚host‘ => $ host,
‚port‘ => $ port,
‚auth‘ => true,
‚username‘ => $ username,
‚password‘ => $ heslo));
$ mail = $ smtp-> odeslat ($ do, $ záhlaví, $ tělo);
if (PEAR :: isError ($ mail)) {
echo („

„. $ mail-> getMessage (). „

„);
} else {
echo („

Zpráva úspěšně odeslána!

„);
}
?>