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.

  • ???? Mit csinál a mail() függvény: A mail() függvény egy szkriptből küld egy e-mailt, amely tartalmazza a címzettet, a tárgyat, az üzenetet és az opcionális fejléceket.
  • 📨 SMTP-átvitel: A PHP levelezés az SMTP-re támaszkodik, amelynek hostját, portját és hitelesítését a php.ini konfigurációs fájlban állítják be.
  • 📋 Másolatot kap és titkos másolatot kap: Az opcionális fejlécek megadhatják a másolat és a titkos másolat címzettjeit, a titkos másolat mezőt pedig elrejthetik a többi címzett elől.
  • 🛡️ Bemenet fertőtlenítése: A filter_var a FILTER_SANITIZE_EMAIL és FILTER_VALIDATE_EMAIL paraméterekkel együtt blokkolja a kapcsolatfelvételi űrlap bemenetéből származó fejlécbefecskendezést.
  • 🔒 Biztos Mail: Az SSL vagy TLS használatával történő kapcsolat titkosítása megvédi az üzenetek tartalmát az átvitel során történő olvasástól.
  • 🧰 Használj PHP-tMailer: PHPMailAz er SMTP hitelesítést, mellékleteket és HTML e-maileket is tartalmaz, így megbízhatóbb, mint a nyers mail().
  • 🤖 AI Assist: A mesterséges intelligencia eszközei konfigurálhatják a PHP-tMailSMTP-vel, és javaslatokat tesz olyan megoldásokra, amelyekkel az e-mailek nem kerülnek a spam mappába.

PHP Mail

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.

Egyszerű Mail Transmission Protokoll

  • Kattintson a Keresés… menüre

Egyszerű Mail Transmission Protokoll

  • Megjelenik a Keresés párbeszédpanel

Egyszerű Mail Transmission Protokoll

  • Kattintson a Következő keresése gombra

Egyszerű Mail Transmission Protokoll

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:

Egyszerű Mail Transmission Protokoll

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:

Az e-mail felhasználói bemenetek fertőtlenítése

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.

GYIK

A leggyakoribb ok a levelezőszerver hiánya a localhoston. Állítson be helyes SMTP értékeket a php.ini fájlban, vagy használjon PHP-t.Mailhitelesített SMTP-fiókkal. Ellenőrizze a szerverhiba-naplót és a spam mappát is.

Adj hozzá olyan fejléceket, amelyek a MIME-Version-t 1.0-ra, a Content-Type-ot pedig text/html-re állítják, majd illeszd be a HTML jelölést az üzenet törzsébe. PHPMailAz er automatikusan kezeli ezt, ha beállítod az isHTML(true) opciót.

A FILTER_SANITIZE_STRING a PHP 8.1 óta elavult. A megjelenítéshez használd a htmlspecialchars() függvényt, vagy egy adott validatort, például a FILTER_VALIDATE_EMAIL függvényt, attól függően, hogy tisztítod vagy ellenőrized az értéket.

Igen. Add meg a mesterséges intelligenciának az SMTP-hosztodat, portodat és biztonsági típusodat, és az generálni tudja a teljes PHP-t.Mailbeállítás hitelesítéssel, feladóval, címzettekkel és hibakezeléssel. A hitelesítő adatokat környezeti változókban, ne kódban tárolja.

Igen. A mesterséges intelligencia tanácsot tud adni az SPF, DKIM és DMARC rekordokkal kapcsolatban, hitelesített SMTP feladó használatával, a spam indítószavak elkerülésével és érvényes feladói cím beállításával, majd segíthet a kézbesíthetőség tesztelésében.

Foglald össze ezt a bejegyzést a következőképpen: