Hvordan sende e-post ved hjelp av PHP mail()-funksjonen
โก Smart oppsummering
PHP-post er den innebygde funksjonen som sender e-post direkte fra et PHP-skript ved hjelp av serverens SMTP-innstillinger. Denne gjennomgangen dekker mail()-syntaksen og -parameterne, konfigurering av SMTP i php.ini, rensing av brukerinput med filter_var, sending av sikker e-post og bruk av PHP.Mailer for pรฅlitelig levering.

Hva er PHP-post?
PHP-post er den innebygde PHP-funksjonen som brukes til รฅ sende e-poster fra PHP-skript.
E-postfunksjonen godtar fรธlgende parametere:
- Epostadresse
- Emne
- Melding
- CC- eller BCC-e-postadresser
Hvorfor og nรฅr du skal bruke PHP-e-post
E-postfunksjonen er nyttig i mange situasjoner:
- Det er en kostnadseffektiv mรฅte รฅ varsle brukere om viktige hendelser pรฅ.
- La brukere kontakte deg via e-post ved รฅ oppgi et kontaktskjema pรฅ nettstedet som sender det oppgitte innholdet pรฅ e-post.
- Utviklere kan bruke den til รฅ motta systemfeilmeldinger via e-post.
- Du kan bruke den til รฅ sende e-post til abonnentene pรฅ nyhetsbrevet.
- Du kan bruke den til รฅ sende lenker for tilbakestilling av passord til brukere som har glemt passordene sine.
- Du kan bruke den til รฅ sende aktiverings- og bekreftelseslenker pรฅ e-post. Dette er nyttig nรฅr du registrerer brukere og bekrefter e-postadressene deres.
Sender e-post med PHP
PHP-postfunksjonen har fรธlgende grunnleggende syntaks.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
HER,
- "$to_email_address" er e-postadressen til e-postmottakeren
- "$subject" er e-postemnet
- "$message" er meldingen som skal sendes.
- ยซ[$headers]ยป er valgfritt; det kan brukes til รฅ inkludere informasjon som CC og BCC.
- CC er forkortelsen for carbon copy. Det brukes nรฅr du vil sende en kopi til en interessert person, dvs. at en klage-e-post sendt til et selskap ogsรฅ kan sendes som CC til klagenemnda.
- BCC er forkortelsen for blindkopi. Det ligner pรฅ CC, men e-postadressene som er inkludert i BCC-delen vises ikke til de andre mottakerne.
Enkelt Mail Transmission Protokoll (SMTP)
PHP-e-post bruker Simple Mail Transmission Protokoll (SMTP) for รฅ sende e-post.
Pรฅ en hosted server ville SMTP-innstillingene allerede vรฆre angitt.
SMTP-e-postinnstillingene kan konfigureres fra filen ยซphp.iniยป i PHP-installasjonsmappen.
For รฅ konfigurere SMTP-innstillinger pรฅ din lokale vert, forutsatt at du bruker XAMPP pรฅ Windows, finn filen ยซphp.iniยป i katalogen ยซC:\xampp\phpยป.
- ร pne den med Notisblokk eller et hvilket som helst tekstredigeringsprogram. Vi bruker Notisblokk i dette eksemplet. Klikk pรฅ Rediger-menyen.
- Klikk pรฅ Finnโฆ-menyen
- Sรธk-dialogboksen vil vises
- Klikk pรฅ Finn neste-knappen
Finn oppfรธringene under [postfunksjon]. Standardlinjene ser vanligvis slik ut:
- ; SMTP = lokal vert
- ; smtp_port = 25
Fjern semikolonene fรธr SMTP og smtp_port, og sett SMTP til din SMTP-server og porten til SMTP-porten din. Innstillingene dine skal se slik ut:
- SMTP = smtp.example.com
- smtp_port = 25
Merk: SMTP-innstillingene kan fรฅs fra webhotellleverandรธren din. Hvis serveren krever autentisering, legg til fรธlgende linjer:
- auth_brukernavn = eksempel_brukernavn@example.com
- auth_password = eksempel_passord
Lagre de nye endringene og start maskinen pรฅ nytt Apache server.
PHP Mail Eksempel
La oss nรฅ se pรฅ et eksempel som sender en enkel e-post.
<?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); ?>
Utgang:
Merk: Eksemplet ovenfor tar bare de fire obligatoriske parameterne. Du bรธr erstatte den fiktive e-postadressen ovenfor med en ekte e-postadresse.
Desinfisering av brukerinndata fra e-post
Eksemplet ovenfor bruker hardkodede verdier i kildekoden for e-postadressen og andre detaljer for enkelhets skyld.
La oss anta at du mรฅ opprette et kontaktskjema der brukerne fyller ut detaljene og deretter sender inn.
- Brukere kan ved et uhell eller med vilje injisere kode i overskriftene, noe som kan fรธre til sending av spam-e-post.
- For รฅ beskytte systemet ditt mot slike angrep, kan du opprette en egendefinert funksjon som renser og validerer verdiene fรธr e-posten sendes.
La oss lage en tilpasset funksjon som validerer og renser e-postadressen ved hjelp av den innebygde filter_var-funksjonen. Filter_var-funksjonen brukes til รฅ rense og validere brukerdata.
Den har fรธlgende grunnleggende syntaks.
<?php filter_var($field, SANITIZATION_TYPE); ?>
HER,
- "filter_var(...)" er validerings- og desinfiseringsfunksjonen
- "$field" er verdien av feltet som skal filtreres.
- ยซSANITERINGSTYPEยป er typen sanering som skal utfรธres pรฅ feltet, for eksempel:
- FILTER_VALIDATE_EMAIL โ returnerer sann for gyldige e-postadresser og usann for ugyldige e-postadresser.
- FILTER_SANITIZE_EMAIL โ fjerner ulovlige tegn fra e-postadresser, slik at en adresse med lรธse tegn reduseres til info@domene.com.
- FILTER_SANITIZE_URL โ fjerner ulovlige tegn fra URLs, og etterlater en ren adresse som https://www.example.com.
- FILTER_SANITIZE_STRING โ fjerner tagger fra strengverdier, slik at am bold blir am bold. Merk at dette filteret er utdatert i PHP 8.1; bruk htmlspecialchars() i stedet.
Koden nedenfor bruker en tilpasset funksjon for รฅ sende sikker e-post.
<?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"; } ?>
Utgang:
Sikre Mail
E-poster kan bli fanget opp under overfรธring av utilsiktede mottakere.
Dette kan eksponere innholdet i e-posten for utilsiktede mottakere.
Sikker e-post lรธser dette problemet ved รฅ transmitsende e-poster over en kryptert forbindelse ved hjelp av SSL eller TLS, for eksempel SMTP over SSL pรฅ port 465 eller STARTTLS pรฅ port 587.
Kryptering forvrenger meldingen fรธr den sendes, slik at bare den tiltenkte mottakerens e-postserver kan lese den.
PHPMailer: Et bedre alternativ til mail()
For ekte applikasjoner bruker de fleste utviklere PHPMailer-biblioteket i stedet for raw mail()-funksjonen. PHPMailer autentiserer seg med en ekstern SMTP-server, noe som forbedrer leveringsevnen betraktelig, og det gjรธr vedlegg og HTML-e-post enkle.
Installer det med Composer, og send deretter e-post via en autentisert, kryptert SMTP-tilkobling som vist nedenfor.
<?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(); ?>
Sammenlignet med mail(), PHPMailer gir deg SMTP-autentisering, innebygd kryptering, stรธtte for vedlegg og tydeligere feilhรฅndtering, og det er derfor det er det anbefalte valget for produksjons-e-post.






