Sådan sender du e-mail ved hjælp af PHP-mail()-funktionen
⚡ Smart opsummering
PHP mail er den indbyggede funktion, der sender e-mails direkte fra et PHP-script ved hjælp af serverens SMTP-indstillinger. Denne gennemgang dækker mail()-syntaksen og -parametrene, konfiguration af SMTP i php.ini, rensning af brugerinput med filter_var, afsendelse af sikker mail og brug af PHP.Mailer for pålidelig levering.

Hvad er PHP-mail?
PHP mail er den indbyggede PHP-funktion, der bruges til at sende e-mails fra PHP-scripts.
Mail-funktionen accepterer følgende parametre:
- E-mail adresse
- Emne
- Besked
- CC- eller BCC-e-mailadresser
Hvorfor og hvornår man skal bruge PHP-mail
Mailfunktionen er nyttig i mange situationer:
- Det er en omkostningseffektiv måde at underrette brugerne om vigtige begivenheder.
- Lad brugere kontakte dig via e-mail ved at angive en kontaktformular på webstedet, der sender det leverede indhold via e-mail.
- Udviklere kan bruge den til at modtage systemfejl via e-mail.
- Du kan bruge det til at sende e-mail til dine nyhedsbrevsabonnenter.
- Du kan bruge den til at sende links til nulstilling af adgangskode til brugere, der har glemt deres adgangskoder.
- Du kan bruge den til at sende aktiverings- og bekræftelseslinks via e-mail. Dette er nyttigt, når du registrerer brugere og verificerer deres e-mailadresser.
Sender mail ved hjælp af PHP
PHP-mailfunktionen har følgende grundlæggende syntaks.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
HER,
- "$to_email_address" er e-mail-adressen på mailmodtageren
- "$subject" er e-mailens emne
- "$message" er den besked, der skal sendes.
- “[$headers]” er valgfri; den kan bruges til at inkludere oplysninger som CC og BCC.
- CC er en forkortelse for carbon copy. Det bruges, når man vil sende en kopi til en interesseret person, dvs. en klage-e-mail sendt til en virksomhed kan også sendes som CC til klagenævnet.
- BCC er en forkortelse for blind carbon copy. Det minder om CC, men e-mailadresserne i BCC-sektionen vises ikke til de andre modtagere.
Simpelt Mail Transmission Protokol (SMTP)
PHP-mail bruger Simple Mail Transmission Protokol (SMTP) til at sende post.
På en hosted server ville SMTP-indstillingerne allerede være angivet.
SMTP-mailindstillingerne kan konfigureres fra filen "php.ini" i PHP-installationsmappen.
For at konfigurere SMTP-indstillinger på din lokale vært, forudsat at du bruger XAMPP Windows, find filen “php.ini” i mappen “C:\xampp\php”.
- Åbn den med Notesblok eller en hvilken som helst teksteditor. Vi bruger Notesblok i dette eksempel. Klik på menuen Rediger.
- Klik på menuen Find…
- Dialogboksen Find vises
- Klik på knappen Find næste
Find posterne under [mail function]. Standardlinjerne ser normalt sådan ud:
- ; SMTP = lokal vært
- ; smtp_port = 25
Fjern semikolonerne før SMTP og smtp_port, og indstil SMTP til din SMTP-server og porten til din SMTP-port. Dine indstillinger bør se således ud:
- SMTP = smtp.example.com
- smtp_port = 25
Bemærk: SMTP-indstillingerne kan fås fra din webhostingudbyder. Hvis serveren kræver godkendelse, skal du tilføje følgende linjer:
- auth_brugernavn = eksempel_brugernavn@eksempel.com
- auth_password = eksempel_adgangskode
Gem de nye ændringer, og genstart Apache serveren.
PHP Mail Eksempel
Lad os nu se på et eksempel, der sender en simpel mail.
<?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:
Bemærk: Ovenstående eksempel bruger kun de 4 obligatoriske parametre. Du bør erstatte ovenstående fiktive e-mailadresse med en rigtig e-mailadresse.
Rengøring af e-mailbrugeres input
Ovenstående eksempel bruger hårdkodede værdier i kildekoden til e-mailadressen og andre detaljer for nemheds skyld.
Lad os antage, at du skal oprette en kontaktformular, hvor brugerne udfylder oplysningerne og derefter sender den.
- Brugere kan ved et uheld eller forsætligt indsætte kode i headerne, hvilket kan resultere i at sende spam-mails.
- For at beskytte dit system mod sådanne angreb kan du oprette en brugerdefineret funktion, der renser og validerer værdierne, før mailen sendes.
Lad os oprette en brugerdefineret funktion, der validerer og renser e-mailadressen ved hjælp af den indbyggede filter_var-funktion. Filter_var-funktionen bruges til at rense og validere brugerinputdata.
Det har følgende grundlæggende syntaks.
<?php filter_var($field, SANITIZATION_TYPE); ?>
HER,
- "filter_var(...)" er validerings- og desinficeringsfunktionen
- "$field" er værdien af det felt, der skal filtreres.
- "SANITISERINGSTYPE" er den type desinfektion, der skal udføres på marken, såsom:
- FILTER_VALIDATE_EMAIL – returnerer sand for gyldige e-mailadresser og falsk for ugyldige e-mailadresser.
- FILTER_SANITIZE_EMAIL – fjerner ulovlige tegn fra e-mailadresser, så en adresse med tilfældige tegn reduceres til info@domæne.com.
- FILTER_SANITIZE_URL – fjerner ulovlige tegn fra URLs, og efterlader en ren adresse såsom https://www.example.com.
- FILTER_SANITIZE_STRING – fjerner tags fra strengværdier, så am bold bliver am bold. Bemærk, at dette filter er udfaset i PHP 8.1; brug htmlspecialchars() i stedet.
Koden nedenfor bruger en brugerdefineret funktion til at sende sikker mail.
<?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:
Sikkert Mail
E-mails kan opsnappes under transmission af utilsigtede modtagere.
Dette kan afsløre indholdet af e-mailen for utilsigtede modtagere.
Sikker post løser dette problem ved at transmitSend e-mails over en krypteret forbindelse ved hjælp af SSL eller TLS, for eksempel SMTP over SSL på port 465 eller STARTTLS på port 587.
Kryptering forvrænger beskeden, før den sendes, så kun den tilsigtede modtagers mailserver kan læse den.
PHPMailer: Et bedre alternativ til mail()
Til rigtige applikationer bruger de fleste udviklere PHPMailer-biblioteket i stedet for raw mail()-funktionen. PHPMailer autentificerer sig med en ekstern SMTP-server, hvilket forbedrer leveringsevnen betydeligt, og det gør vedhæftede filer og HTML-e-mails enkle.
Installer det med Composer, og send derefter mail via en godkendt, krypteret SMTP-forbindelse 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 giver dig SMTP-godkendelse, indbygget kryptering, understøttelse af vedhæftede filer og tydeligere fejlhåndtering, hvilket er grunden til, at det er det anbefalede valg til produktions-e-mail.






