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 dělá funkce mail(): Funkce mail() odešle e-mail ze skriptu a vezme si příjemce, předmět, zprávu a volitelné záhlaví.
  • 📨 Transport SMTP: PHP pošta se spoléhá na SMTP, jehož hostitel, port a ověřování se nastavují v konfiguračním souboru php.ini.
  • ???? Kopie a skrytá kopie: Volitelné záhlaví přidávají příjemce kopie a skryté kopie, přičemž skrytá kopie je skryta před ostatními příjemci.
  • 🛡️ Sanitizovat vstup: Filter_var s parametry FILTER_SANITIZE_EMAIL a FILTER_VALIDATE_EMAIL blokuje vkládání hlaviček z kontaktního formuláře.
  • 🔒 Zajistěte si Mail: Šifrování připojení pomocí SSL nebo TLS chrání obsah zprávy před čtením během přenosu.
  • 🧰 Používejte PHPMailer: PHPMailer přidává SMTP ověřování, přílohy a HTML e-maily, což ho činí spolehlivějším než raw mail().
  • 🤖 AI Assist: Nástroje umělé inteligence mohou konfigurovat PHPMails SMTP a navrhněte opravy, které udrží vaše e-maily mimo složku se spamem.

PHP Mail

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:

  • E-mail
  • 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.

prostý Mail Transmission Protokol

  • Klikněte na nabídku Najít…

prostý Mail Transmission Protokol

  • Zobrazí se dialogové okno Najít

prostý Mail Transmission Protokol

  • Klikněte na tlačítko Najít další

prostý Mail Transmission Protokol

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:

prostý Mail Transmission Protokol

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:

Čištění e-mailových uživatelských vstupů

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.

Nejčastější dotazy

Nejčastější příčinou je nenakonfigurovaný poštovní server na localhostu. Nastavte správné hodnoty SMTP v php.ini nebo použijte PHP.Mails ověřeným účtem SMTP. Zkontrolujte také protokol chyb serveru a složku s nevyžádanou poštou.

Přidejte hlavičky, které nastaví MIME-Version na 1.0 a Content-Type na text/html, a poté vložte HTML kód do těla zprávy. PHPMailer to zvládne automaticky, když nastavíte jeho volbu isHTML(true).

Funkce FILTER_SANITIZE_STRING je od verze PHP 8.1 zastaralá. Pro escapování výstupu pro zobrazení použijte funkci htmlspecialchars() nebo specifický validátor, například FILTER_VALIDATE_EMAIL, v závislosti na tom, zda hodnotu čistíte nebo kontrolujete.

Ano. Zadejte AI váš SMTP hostitel, port a typ zabezpečení a dokáže vygenerovat kompletní PHP kód.Mailnastavení s ověřováním, odesílatelem, příjemci a ošetřením chyb. Ukládejte přihlašovací údaje do proměnných prostředí, nikoli do kódu.

Ano. Umělá inteligence vám může poradit ohledně záznamů SPF, DKIM a DMARC, použití ověřeného odesílatele SMTP, vyhýbání se spouštěcím slovům spamu a nastavení platné adresy odesílatele a poté vám pomůže otestovat doručitelnost.

Shrňte tento příspěvek takto: