Kako poslati e-poštu koristeći PHP mail() funkciju
⚡ Pametni sažetak
PHP mail je ugrađena funkcija koja šalje e-poštu izravno iz PHP skripte koristeći SMTP postavke poslužitelja. Ovaj vodič pokriva sintaksu i parametre mail(), konfiguriranje SMTP-a u php.ini, čišćenje korisničkog unosa pomoću filter_var, slanje sigurne pošte i korištenje PHP-a.Mailza pouzdanu dostavu.

Što je PHP pošta?
PHP mail je ugrađena PHP funkcija koja se koristi za slanje e-pošte iz PHP skripti.
Funkcija pošte prihvaća sljedeće parametre:
- Adresa e-pošte
- Naslov
- Poruka
- CC ili BCC adrese e-pošte
Zašto i kada koristiti PHP poštu
Funkcija pošte korisna je u mnogim situacijama:
- To je isplativ način obavještavanja korisnika o važnim događajima.
- Omogućite korisnicima da vas kontaktiraju putem e-pošte tako što ćete na web stranici poslati obrazac za kontakt koji šalje navedeni sadržaj e-poštom.
- Programeri ga mogu koristiti za primanje sistemskih pogrešaka putem e-pošte.
- Možete ga koristiti za slanje e-pošte svojim pretplatnicima na newsletter.
- Možete ga koristiti za slanje poveznica za resetiranje lozinke korisnicima koji su zaboravili svoje lozinke.
- Možete ga koristiti za slanje aktivacijskih i potvrdnih poveznica e-poštom. To je korisno prilikom registracije korisnika i provjere njihovih adresa e-pošte.
Slanje pošte pomoću PHP-a
PHP funkcija mail ima sljedeću osnovnu sintaksu.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
OVDJE,
- “$to_email_address” je adresa e-pošte primatelja pošte
- “$subject” je predmet e-pošte
- “$message” je poruka koju treba poslati.
- „[$headers]“ je opcionalno; može se koristiti za uključivanje informacija kao što su CC i BCC.
- CC je kratica za carbon copy (kopija). Koristi se kada želite poslati kopiju zainteresiranoj osobi, tj. e-poruka s pritužbom poslana tvrtki može se poslati kao CC i odboru za pritužbe.
- BCC je kratica za skrivenu kopiju (blind carbon copy). Slična je polju CC, ali adrese e-pošte navedene u odjeljku BCC ne prikazuju se ostalim primateljima.
Jednostavan Mail Transmission Protokol (SMTP)
PHP pošta koristi Simple Mail Transmission Protokol (SMTP) za slanje pošte.
Na hostanom poslužitelju, SMTP postavke bi već bile postavljene.
Postavke SMTP pošte mogu se konfigurirati iz datoteke "php.ini" u instalacijskoj mapi PHP-a.
Za konfiguriranje SMTP postavki na vašem lokalnom hostu, pod pretpostavkom da koristite XAMPP na Windows, pronađite datoteku „php.ini“ u direktoriju „C:\xampp\php“.
- Otvorite ga pomoću Notepada ili bilo kojeg uređivača teksta. U ovom primjeru koristit ćemo Notepad. Kliknite na izbornik Uredi.
- Kliknite na izbornik Pronađi…
- Pojavit će se dijalog Pronađi
- Kliknite gumb Pronađi sljedeće
Pronađite unose pod [funkcija pošte]. Zadani naredci obično izgledaju ovako:
- ; SMTP = lokalni host
- ; smtp_port = 25
Uklonite točku-zarez prije SMTP-a i smtp_porta te postavite SMTP na svoj SMTP poslužitelj i port na vaš SMTP port. Vaše postavke trebale bi izgledati ovako:
- SMTP = smtp.example.com
- smtp_port = 25
Napomena: SMTP postavke možete dobiti od svog pružatelja web hostinga. Ako poslužitelj zahtijeva autentifikaciju, dodajte sljedeće retke:
- auth_username = example_username@example.com
- auth_password = primjer_lozinke
Spremite nove promjene i ponovno pokrenite apaš poslužitelj.
PHP Mail Primjer
Pogledajmo sada primjer koji šalje jednostavnu poštu.
<?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); ?>
Izlaz:
Napomena: gornji primjer uzima samo 4 obavezna parametra. Gornju izmišljenu adresu e-pošte trebali biste zamijeniti stvarnom adresom e-pošte.
Čišćenje korisničkih unosa e-pošte
Gornji primjer koristi tvrdo kodirane vrijednosti u izvornom kodu za adresu e-pošte i druge detalje radi jednostavnosti.
Pretpostavimo da morate stvoriti kontaktni obrazac gdje korisnici ispunjavaju podatke, a zatim ih šalju.
- Korisnici mogu slučajno ili namjerno ubrizgati kod u zaglavlja, što može rezultirati slanjem neželjene pošte.
- Kako biste zaštitili svoj sustav od takvih napada, možete stvoriti prilagođenu funkciju koja čisti i provjerava vrijednosti prije slanja e-pošte.
Izradimo prilagođenu funkciju koja provjerava i dezinficira adresu e-pošte pomoću ugrađene funkcije filter_var. Funkcija filter_var koristi se za dezinfekciju i validaciju korisničkih unosa.
Ima sljedeću osnovnu sintaksu.
<?php filter_var($field, SANITIZATION_TYPE); ?>
OVDJE,
- “filter_var(…)” je funkcija provjere valjanosti i dezinfekcije
- “$field” je vrijednost polja koje se filtrira.
- „VRSTA_SANITIZACIJE“ je vrsta dezinfekcije koja će se provesti na terenu, kao što je:
- FILTER_VALIDATE_EMAIL – vraća vrijednost true za valjane adrese e-pošte i false za nevažeće adrese e-pošte.
- FILTER_SANITIZE_EMAIL – uklanja nedozvoljene znakove iz adresa e-pošte, pa se adresa s nepotrebnim znakovima svodi na info@domena.com.
- FILTER_SANITIZIRAJ_URL – uklanja nedozvoljene znakove iz URLs, ostavljajući čistu adresu kao što je https://www.example.com.
- FILTER_SANITIZE_STRING – uklanja oznake iz string vrijednosti, pa am bold postaje am bold. Imajte na umu da je ovaj filter zastario u PHP 8.1; umjesto toga koristite htmlspecialchars().
Donji kod koristi prilagođenu funkciju za slanje sigurne pošte.
<?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"; } ?>
Izlaz:
Osigurati Mail
Nenamjerni primatelji mogu presresti elektroničku poštu tijekom prijenosa.
To može otkriti sadržaj e-pošte neželjenim primateljima.
Sigurna pošta rješava ovaj problem tako što transmitslanje e-pošte putem šifrirane veze pomoću SSL-a ili TLS-a, na primjer SMTP preko SSL-a na portu 465 ili STARTTLS na portu 587.
Šifriranjem se poruka prepravlja prije slanja, tako da je može pročitati samo poslužitelj pošte primatelja.
PHPMailBolja alternativa za mail()
Za stvarne aplikacije, većina programera koristi PHPMailer biblioteku umjesto sirove funkcije mail(). PHPMailAutentificira se s vanjskim SMTP poslužiteljem, što uvelike poboljšava isporučivost i pojednostavljuje slanje privitaka i HTML e-pošte.
Instalirajte ga pomoću Composera, a zatim pošaljite poštu putem autentificirane, šifrirane SMTP veze kao što je prikazano dolje.
<?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(); ?>
U usporedbi s mail(), PHPMailer vam pruža SMTP autentifikaciju, ugrađeno šifriranje, podršku za privitke i jasniju obradu pogrešaka, zbog čega je preporučeni izbor za produkcijsku e-poštu.






