Jak odeslat e-mail pomocí funkce PHP mail().
⚡ Chytré shrnutí
PHP mail je vestavěná funkce, která odesílá e-maily přímo z PHP skriptu pomocí nastavení SMTP serveru. Tento návod se zabývá syntaxí a parametry funkce mail(), konfigurací SMTP v souboru php.ini, čištěním uživatelského vstupu pomocí filter_var, odesíláním zabezpečené pošty a používáním PHP.Mailpro spolehlivé doručení.

Co je to PHP mail?
PHP mail je vestavěná funkce PHP, která se používá k odesílání e-mailů z PHP skriptů.
Funkce pošty přijímá následující parametry:
- Předmět
- Zpráva
- E-mailové adresy CC nebo BCC
Proč a kdy používat PHP mail
Funkce e-mailu je užitečná v mnoha situacích:
- Je to cenově dostupný způsob, jak informovat uživatele o důležitých událostech.
- Umožněte uživatelům kontaktovat vás prostřednictvím e-mailu poskytnutím kontaktního formuláře na webové stránce, která zasílá e-mailem poskytnutý obsah.
- Vývojáři jej mohou použít k přijímání systémových chyb e-mailem.
- Můžete jej použít k zasílání e-mailů odběratelům newsletteru.
- Můžete jej použít k odeslání odkazů pro obnovení hesla uživatelům, kteří zapomněli svá hesla.
- Můžete jej použít k zasílání aktivačních a potvrzovacích odkazů e-mailem. To je užitečné při registraci uživatelů a ověřování jejich e-mailových adres.
Odesílání pošty pomocí PHP
Funkce mail v PHP má následující základní syntaxi.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
TADY,
- „$to_email_address“ je e-mailová adresa příjemce pošty
- „$předmět“ je předmět e-mailu
- „$message“ je zpráva, která má být odeslána.
- „[$headers]“ je volitelný atribut; lze jej použít k zahrnutí informací, jako je CC a BCC.
- CC je zkratka pro carbon copy (kopii). Používá se, když chcete zaslat kopii zainteresované osobě, tj. e-mail se stížností zaslaný společnosti lze také odeslat jako CC na stížnostní komisi.
- BCC je zkratka pro anonymní kopii. Je podobná políčku CC, ale e-mailové adresy uvedené v sekci BCC se ostatním příjemcům nezobrazují.
prostý Mail Transmission protokol (SMTP)
PHP e-mail používá Simple Mail Transmission Protokol (SMTP) pro odesílání pošty.
Na hostovaném serveru by nastavení SMTP již bylo nastaveno.
Nastavení SMTP pošty lze nakonfigurovat ze souboru „php.ini“ v instalační složce PHP.
Konfigurace nastavení SMTP na vašem localhostu, za předpokladu, že používáte XAMPP na Windows, vyhledejte soubor „php.ini“ v adresáři „C:\xampp\php“.
- Otevřete jej pomocí Poznámkového bloku nebo libovolného textového editoru. V tomto příkladu použijeme Poznámkový blok. Klikněte na nabídku Upravit.
- Klikněte na nabídku Najít…
- Zobrazí se dialogové okno Najít
- Klikněte na tlačítko Najít další
Vyhledejte položky v sekci [funkce pošty]. Výchozí řádky obvykle vypadají takto:
- ; SMTP = localhost
- ; smtp_port = 25
Odstraňte středníky před SMTP a smtp_port a nastavte SMTP na váš SMTP server a port pro váš SMTP port. Vaše nastavení by mělo vypadat takto:
- SMTP = smtp.example.com
- smtp_port = 25
Poznámka: Nastavení SMTP lze získat od poskytovatele webhostingu. Pokud server vyžaduje ověření, přidejte následující řádky:
- auth_username = example_username@example.com
- auth_password = příklad_hesla
Uložte nové změny a restartujte Apache serveru.
PHP Mail Příklad
Podívejme se nyní na příklad odesílání jednoduchého e-mailu.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Výstup:
Poznámka: Výše uvedený příklad obsahuje pouze 4 povinné parametry. Výše uvedenou fiktivní e-mailovou adresu byste měli nahradit skutečnou e-mailovou adresou.
Čištění e-mailových uživatelských vstupů
Výše uvedený příklad používá pro zjednodušení pevně zakódované hodnoty ve zdrojovém kódu pro e-mailovou adresu a další podrobnosti.
Předpokládejme, že musíte vytvořit kontaktní formulář, kde uživatelé vyplní údaje a poté je odešlou.
- Uživatelé mohou omylem nebo úmyslně vložit kód do záhlaví, což může vést k odesílání spamu.
- Abyste ochránili svůj systém před takovými útoky, můžete vytvořit vlastní funkci, která dezinfikuje a ověřuje hodnoty před odesláním pošty.
Vytvořme si vlastní funkci, která ověřuje a čistí e-mailovou adresu pomocí vestavěné funkce filter_var. Funkce filter_var se používá k sanitaci a validaci vstupních dat uživatele.
Má následující základní syntaxi.
<?php filter_var($field, SANITIZATION_TYPE); ?>
TADY,
- „filter_var(…)“ je funkce ověření a dezinfekce
- „$field“ je hodnota pole, které má být filtrováno.
- „TYP_SANITIZACE“ je typ dezinfekce, která se má na hřišti provést, například:
- FILTER_VALIDATE_EMAIL – vrací hodnotu true pro platné e-mailové adresy a hodnotu false pro neplatné e-mailové adresy.
- FILTER_SANITIZE_EMAIL – odstraňuje neplatné znaky z e-mailových adres, takže adresa s nežádoucími znaky se zkrátí na info@domena.com.
- FILTROVAT_DEZINFEKCI_URL – odstraňuje neplatné znaky z URLs ponecháním čisté adresy, například https://www.example.com.
- FILTER_SANITIZE_STRING – odstraňuje tagy z řetězcových hodnot, takže am bold se stane am bold. Tento filtr je v PHP 8.1 zastaralý; použijte místo něj htmlspecialchars().
Níže uvedený kód používá vlastní funkci k odesílání zabezpečené pošty.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Výstup:
Zajistěte si Mail
E-maily mohou být během přenosu zachyceny nezamýšlenými příjemci.
To může vystavit obsah e-mailu nechtěným příjemcům.
Zabezpečená pošta tento problém řeší tím, že transmitodesílání e-mailů přes šifrované připojení pomocí SSL nebo TLS, například SMTP přes SSL na portu 465 nebo STARTTLS na portu 587.
Šifrování zprávu před odesláním zašifruje, takže si ji může přečíst pouze poštovní server zamýšleného příjemce.
PHPMailer: Lepší alternativa k mail()
Pro reálné aplikace většina vývojářů používá PHPMailknihovnu er místo funkce mail(). PHPMailOvěřuje se pomocí externího SMTP serveru, což výrazně zlepšuje doručitelnost a zjednodušuje odesílání příloh a HTML e-mailů.
Nainstalujte jej pomocí Composeru a poté odesílejte poštu prostřednictvím ověřeného, šifrovaného SMTP připojení, jak je znázorněno níže.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Ve srovnání s mail() v PHPMailer nabízí SMTP ověřování, vestavěné šifrování, podporu příloh a jasnější zpracování chyb, a proto je doporučenou volbou pro produkční e-maily.






