Hur man skickar e-post med PHP mail()-funktionen
โก Smart sammanfattning
PHP-post รคr den inbyggda funktionen som skickar e-post direkt frรฅn ett PHP-skript med hjรคlp av serverns SMTP-instรคllningar. Den hรคr genomgรฅngen tรคcker mail()-syntaxen och parametrarna, konfigurering av SMTP i php.ini, sanering av anvรคndarinmatning med filter_var, sรคndning av sรคker e-post och anvรคndning av PHP.Mailfรถr pรฅlitlig leverans.

Vad รคr PHP-e-post?
PHP-post รคr den inbyggda PHP-funktionen som anvรคnds fรถr att skicka e-postmeddelanden frรฅn PHP-skript.
E-postfunktionen accepterar fรถljande parametrar:
- E-postadress
- รmne
- Meddelande
- CC- eller BCC-e-postadresser
Varfรถr och nรคr man ska anvรคnda PHP-e-post
E-postfunktionen รคr anvรคndbar i mรฅnga situationer:
- Det รคr ett kostnadseffektivt sรคtt att meddela anvรคndare om viktiga hรคndelser.
- Lรฅt anvรคndare kontakta dig via e-post genom att tillhandahรฅlla ett kontaktformulรคr pรฅ webbplatsen som e-postar det tillhandahรฅllna innehรฅllet.
- Utvecklare kan anvรคnda den fรถr att ta emot systemfel via e-post.
- Du kan anvรคnda den fรถr att skicka e-post till dina prenumeranter pรฅ nyhetsbrevet.
- Du kan anvรคnda den fรถr att skicka lรคnkar fรถr lรถsenordsรฅterstรคllning till anvรคndare som glรถmmer sina lรถsenord.
- Du kan anvรคnda den fรถr att skicka aktiverings- och bekrรคftelselรคnkar via e-post. Detta รคr anvรคndbart nรคr du registrerar anvรคndare och verifierar deras e-postadresser.
Skickar e-post med PHP
PHP-e-postfunktionen har fรถljande grundlรคggande syntax.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
HรR,
- "$to_email_address" รคr e-postadressen till e-postmottagaren
- "$subject" รคr e-postรคmnet
- "$meddelande" รคr meddelandet som ska skickas.
- โ[$headers]โ รคr valfritt; det kan anvรคndas fรถr att inkludera information som CC och BCC.
- CC รคr fรถrkortningen fรถr carbon copy. Det anvรคnds nรคr man vill skicka en kopia till en intresserad person, dvs. ett klagomรฅlsmejl som skickas till ett fรถretag kan ocksรฅ skickas som CC till klagomรฅlsnรคmnden.
- BCC รคr fรถrkortningen fรถr blind kopia. Det liknar CC, men e-postadresserna som ingรฅr i BCC-avsnittet visas inte fรถr de andra mottagarna.
Enkelt Mail Transmission Protokoll (SMTP)
PHP-e-post anvรคnder Simple Mail Transmission Protokoll (SMTP) fรถr att skicka e-post.
Pรฅ en vรคrdbaserad server skulle SMTP-instรคllningarna redan vara instรคllda.
SMTP-e-postinstรคllningarna kan konfigureras frรฅn filen "php.ini" i PHP-installationsmappen.
Fรถr att konfigurera SMTP-instรคllningar pรฅ din lokala vรคrd, fรถrutsatt att du anvรคnder XAMPP Windows, leta reda pรฅ filen โphp.iniโ i katalogen โC:\xampp\phpโ.
- รppna den med Anteckningar eller valfri textredigerare. Vi anvรคnder Anteckningar i det hรคr exemplet. Klicka pรฅ Redigera-menyn.
- Klicka pรฅ menyn Sรถkโฆ
- Sรถkdialogrutan visas
- Klicka pรฅ knappen Hitta nรคsta
Leta reda pรฅ posterna under [mail function]. Standardraderna ser vanligtvis ut sรฅ hรคr:
- ; SMTP = lokal vรคrd
- ; smtp_port = 25
Ta bort semikolonen fรถre SMTP och smtp_port och stรคll in SMTP pรฅ din SMTP-servern och porten till din SMTP-port. Dina instรคllningar bรถr se ut sรฅ hรคr:
- SMTP = smtp.example.com
- smtp_port = 25
Obs: SMTP-instรคllningarna kan erhรฅllas frรฅn din webbhotellleverantรถr. Om servern krรคver autentisering, lรคgg till fรถljande rader:
- auth_username = exempel_anvรคndarnamn@example.com
- auth_password = exempel_lรถsenord
Spara de nya รคndringarna och starta om Apache servern.
PHP Mail Exempelvis
Lรฅt oss nu titta pรฅ ett exempel som skickar ett enkelt e-postmeddelande.
<?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); ?>
Produktion:
Obs: exemplet ovan tar endast de 4 obligatoriska parametrarna. Du bรถr ersรคtta den fiktiva e-postadressen ovan med en riktig e-postadress.
Sanering av e-postanvรคndarinmatningar
Ovanstรฅende exempel anvรคnder hรฅrdkodade vรคrden i kรคllkoden fรถr e-postadressen och andra detaljer fรถr enkelhetens skull.
Lรฅt oss anta att du mรฅste skapa ett kontaktformulรคr dรคr anvรคndare fyller i uppgifterna och sedan skickar in.
- Anvรคndare kan av misstag eller avsiktligt injicera kod i rubrikerna, vilket kan resultera i att skrรคppost skickas.
- Fรถr att skydda ditt system frรฅn sรฅdana attacker kan du skapa en anpassad funktion som rensar och validerar vรคrdena innan posten skickas.
Lรฅt oss skapa en anpassad funktion som validerar och sanerar e-postadressen med hjรคlp av den inbyggda funktionen filter_var. Funktionen filter_var anvรคnds fรถr att sanera och validera anvรคndarinmatningsdata.
Den har fรถljande grundlรคggande syntax.
<?php filter_var($field, SANITIZATION_TYPE); ?>
HรR,
- "filter_var(...)" รคr validerings- och saneringsfunktionen
- "$field" รคr vรคrdet pรฅ fรคltet som ska filtreras.
- โSANITERINGSTYPโ รคr den typ av sanering som ska utfรถras pรฅ fรคltet, till exempel:
- FILTER_VALIDATE_EMAIL โ returnerar sant fรถr giltiga e-postadresser och falskt fรถr ogiltiga e-postadresser.
- FILTER_SANITIZE_EMAIL โ tar bort ogiltiga tecken frรฅn e-postadresser, sรฅ en adress med lรถsa tecken reduceras till info@domรคn.com.
- FILTER_SANITIZE_URL โ tar bort otillรฅtna tecken frรฅn URLs, och lรคmna en ren adress som https://www.example.com.
- FILTER_SANITIZE_STRING โ tar bort taggar frรฅn strรคngvรคrden, sรฅ am bold blir am bold. Observera att detta filter รคr fรถrรฅldrat i PHP 8.1; anvรคnd htmlspecialchars() istรคllet.
Koden nedan anvรคnder en anpassad funktion fรถr att skicka sรคker 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"; } ?>
Produktion:
Sรคkra Mail
E-postmeddelanden kan fรฅngas upp under รถverfรถring av oavsiktliga mottagare.
Detta kan exponera innehรฅllet i e-postmeddelandet fรถr oavsiktliga mottagare.
Sรคker e-post lรถser detta problem genom att transmitskicka e-postmeddelanden รถver en krypterad anslutning med SSL eller TLS, till exempel SMTP รถver SSL pรฅ port 465 eller STARTTLS pรฅ port 587.
Kryptering fรถrvrรคnger meddelandet innan det skickas, sรฅ att bara den avsedda mottagarens e-postserver kan lรคsa det.
PHPMailer: Ett bรคttre alternativ till mail()
Fรถr riktiga applikationer anvรคnder de flesta utvecklare PHPMailer-biblioteket istรคllet fรถr raw mail()-funktionen. PHPMailautentiserar sig med en extern SMTP-server, vilket avsevรคrt fรถrbรคttrar leveransbarheten och gรถr det enkelt att skicka bilagor och skicka HTML-e-post.
Installera det med Composer och skicka sedan e-post via en autentiserad, krypterad SMTP-anslutning enligt nedan.
<?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(); ?>
Jรคmfรถrt med mail(), PHPMailer ger dig SMTP-autentisering, inbyggd kryptering, stรถd fรถr bilagor och tydligare felhantering, vilket รคr anledningen till att det รคr det rekommenderade valet fรถr produktions-e-post.






