Hogyan küldjünk e-mailt a PHP mail() függvény segítségével
⚡ Okos összefoglaló
A PHP mail egy beépített függvény, amely közvetlenül egy PHP szkriptből küld e-mailt a szerver SMTP-beállításainak használatával. Ez az útmutató a mail() szintaxist és paramétereket, az SMTP konfigurálását a php.ini fájlban, a felhasználói bevitel fertőtlenítését a filter_var segítségével, a biztonságos levelek küldését és a PHP használatát ismerteti.Maila megbízható szállításért.

Mi az a PHP mail?
A PHP mail egy beépített PHP függvény, amelyet PHP szkriptekből származó e-mailek küldésére használnak.
A levelezési funkció a következő paramétereket fogadja el:
- E-mail cím
- Tárgy
- Üzenet
- CC vagy BCC e-mail címek
Miért és mikor érdemes PHP levelezést használni?
A levelező funkció számos helyzetben hasznos lehet:
- Ez egy költséghatékony módja annak, hogy értesítsük a felhasználókat a fontos eseményekről.
- Engedje meg a felhasználóknak, hogy e-mailben kapcsolatba léphessenek Önnel egy kapcsolatfelvételi űrlap kitöltésével azon a webhelyen, amely e-mailben elküldi a megadott tartalmat.
- A fejlesztők e-mailben kaphatják meg a rendszerhibákról szóló értesítéseket.
- Használhatja hírlevélre feliratkozói e-mailek küldésére.
- Használhatod jelszó-visszaállító linkek küldésére azoknak a felhasználóknak, akik elfelejtették a jelszavukat.
- Használhatod aktiválási és megerősítő linkek küldésére e-mailben. Ez hasznos a felhasználók regisztrálásakor és e-mail címük ellenőrzésekor.
Levélküldés PHP-vel
A PHP mail függvényének alapvető szintaxisa a következő.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
ITT,
- A „$to_email_address” a levél címzettjének e-mail címe
- A „$subject” az e-mail tárgya
- A „$message” az elküldendő üzenet.
- A „[$headers]” opcionális; olyan információk megadására használható, mint a CC és a BCC.
- A CC a másolat (carbon copy) rövidítése. Akkor használjuk, ha másolatot szeretnénk küldeni egy érdekelt személynek, azaz egy cégnek küldött panasz e-mailt másolatként (CC) is el lehet küldeni a panaszbizottságnak.
- A BCC a titkos másolat (blind carbon copy) rövidítése. Hasonló a CC-hez (CC), de a BCC részben szereplő e-mail címek nem jelennek meg a többi címzettnek.
Egyszerű Mail Transmission Protokoll (SMTP)
A PHP levelezés az Egyszerűt használja. Mail Transmission Protokoll (SMTP) a levelek küldéséhez.
Egy hosztolt szerveren az SMTP-beállítások már be vannak állítva.
Az SMTP levelezési beállítások a PHP telepítési mappájában található „php.ini” fájlban konfigurálhatók.
Az SMTP-beállítások konfigurálásához a localhoston, feltételezve, hogy XAMPP-t használsz a következőn: Windows, keresse meg a „php.ini” fájlt a „C:\xampp\php” könyvtárban.
- Nyisd meg a Jegyzettömbbel vagy bármilyen szövegszerkesztővel. Ebben a példában a Jegyzettömböt fogjuk használni. Kattints a Szerkesztés menüre.
- Kattintson a Keresés… menüre
- Megjelenik a Keresés párbeszédpanel
- Kattintson a Következő keresése gombra
Keresd meg a bejegyzéseket a [mail function] alatt. Az alapértelmezett sorok általában így néznek ki:
- ; SMTP = localhost
- ; smtp_port = 25
Távolítsa el a pontosvesszőket az SMTP és az smtp_port elől, és állítsa az SMTP-t a sajátjára. SMTP szerver és a portot az SMTP portodhoz. A beállításainak a következőképpen kell kinézniük:
- SMTP = smtp.example.com
- smtp_port = 25
Megjegyzés: az SMTP-beállításokat a web hosting szolgáltatójától szerezheti be. Ha a szerver hitelesítést igényel, akkor add hozzá a következő sorokat:
- auth_username = example_username@example.com
- auth_password = példa_jelszó
Mentse el az új módosításokat, és indítsa újra a Apache szervert.
PHP Mail Példa
Most nézzünk egy példát, amely egy egyszerű e-mailt küld.
<?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); ?>
output:
Megjegyzés: a fenti példa csak a 4 kötelező paramétert veszi figyelembe. A fenti fiktív e-mail címet egy valós e-mail címmel kell helyettesíteni.
Az e-mail felhasználói bemenetek fertőtlenítése
A fenti példa kemény kódolt értékeket használ a forráskódban az e-mail címhez és egyéb részletekhez az egyszerűség kedvéért.
Tegyük fel, hogy létre kell hoznod egy kapcsolatfelvételi űrlapot, ahol a felhasználók kitöltik az adatokat, majd elküldik azokat.
- A felhasználók véletlenül vagy szándékosan kódot helyezhetnek a fejlécekbe, ami spam küldéséhez vezethet.
- A rendszer ilyen támadásokkal szembeni védelme érdekében létrehozhat egy egyéni funkciót, amely megtisztítja és ellenőrzi az értékeket a levél elküldése előtt.
Hozzunk létre egy egyéni függvényt, amely a beépített filter_var függvény segítségével ellenőrzi és fertőtleníti az e-mail címet. A filter_var függvény a felhasználói bemeneti adatok fertőtlenítésére és validálására szolgál.
A következő alapvető szintaxissal rendelkezik.
<?php filter_var($field, SANITIZATION_TYPE); ?>
ITT,
- A „filter_var(…)” az érvényesítési és fertőtlenítési funkció
- A „$field” a szűrendő mező értéke.
- A „FERTŐTLENÍTÉS_TÍPUS” a pályán végrehajtandó fertőtlenítés típusa, például:
- FILTER_VALIDATE_EMAIL – érvényes e-mail címek esetén igaz, érvénytelen e-mail címek esetén pedig hamis értéket ad vissza.
- FILTER_SANITIZE_EMAIL – eltávolítja a szabálytalan karaktereket az e-mail címekből, így a téves karaktereket tartalmazó cím info@domain.com-ra redukálódik.
- SZŰRŐ_FERTŐTLENÍTÉS_URL – eltávolítja a nem megengedett karaktereket URLs, tiszta címet hagyva, például https://www.example.com.
- FILTER_SANITIZE_STRING – eltávolítja a címkéket a karakterlánc értékekből, így az am bold szövegből am bold lesz. Megjegyzendő, hogy ez a szűrő elavult a PHP 8.1-ben; helyette a htmlspecialchars() függvényt kell használni.
Az alábbi kód egy egyéni függvényt használ biztonságos levelek küldéséhez.
<?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"; } ?>
output:
Biztos Mail
Az e-maileket az átvitel során nem kívánt címzettek elfoghatják.
Ezáltal az e-mail tartalma nem kívánt címzettekhez juthat el.
A biztonságos levelezés megoldja ezt a problémát transmite-mailek küldése titkosított kapcsolaton keresztül SSL vagy TLS használatával, például SMTP SSL-en keresztül a 465-ös porton vagy STARTTLS az 587-es porton.
A titkosítás a küldés előtt összekeveri az üzenetet, így csak a címzett levelezőszervere tudja elolvasni.
PHPMailer: Jobb alternatíva a mail()-hez képest
Valódi alkalmazásokhoz a legtöbb fejlesztő a PHP-t használja.Mailer könyvtár a nyers mail() függvény helyett. PHPMailAz er egy külső SMTP-kiszolgálóval hitelesíti magát, ami jelentősen javítja a kézbesíthetőséget, és egyszerűvé teszi a mellékletek és a HTML formátumú e-mailek küldését.
Telepítsd a Composerrel, majd küldj leveleket egy hitelesített, titkosított SMTP-kapcsolaton keresztül az alábbiak szerint.
<?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(); ?>
A mail()-hez képest a PHPMailAz er SMTP-hitelesítést, beépített titkosítást, melléklettámogatást és áttekinthetőbb hibakezelést biztosít, ezért ez az ajánlott választás az éles e-mailekhez.






