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 mail() gรถr: Funktionen mail() skickar ett e-postmeddelande frรฅn ett skript och tar mottagaren, รคmnet, meddelandet och valfria rubriker.
  • ๐Ÿ“จ SMTP-transport: PHP-e-post anvรคnder SMTP, vars vรคrd, port och autentisering stรคlls in i konfigurationsfilen php.ini.
  • ๐Ÿ“‹ CC och BCC: Valfria rubriker lรคgger till mottagare av kopia och blind kopia, med hemlig kopia dold frรฅn de andra mottagarna.
  • ๐Ÿ›ก๏ธ Sanera inmatning: filter_var med FILTER_SANITIZE_EMAIL och FILTER_VALIDATE_EMAIL blockerar headerinmatning frรฅn kontaktformulรคrsinmatning.
  • ๐Ÿ”’ Sรคkra Mail: Att kryptera anslutningen med SSL eller TLS skyddar meddelandets innehรฅll frรฅn att lรคsas under รถverfรถring.
  • ๐Ÿงฐ Anvรคnd PHPMaileR: PHPMailer lรคgger till SMTP-autentisering, bilagor och HTML-e-post, vilket gรถr den mer tillfรถrlitlig รคn raw mail().
  • ๐Ÿค– AI Assist: AI-verktyg kan konfigurera PHPMailmed SMTP och fรถreslรฅ lรถsningar som hรฅller dina e-postmeddelanden borta frรฅn skrรคppostmappen.

PHP Mail

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.

Enkelt Mail Transmission Protokoll

  • Klicka pรฅ menyn Sรถkโ€ฆ

Enkelt Mail Transmission Protokoll

  • Sรถkdialogrutan visas

Enkelt Mail Transmission Protokoll

  • Klicka pรฅ knappen Hitta nรคsta

Enkelt Mail Transmission Protokoll

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:

Enkelt Mail Transmission Protokoll

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:

Sanering av e-postanvรคndarinmatningar

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.

Vanliga frรฅgor

Den vanligaste orsaken รคr att ingen e-postserver รคr konfigurerad pรฅ localhost. Stรคll in korrekta SMTP-vรคrden i php.ini, eller anvรคnd PHP.Mailmed ett autentiserat SMTP-konto. Kontrollera รคven serverfelloggen och din skrรคppostmapp.

Lรคgg till rubriker som stรคller in MIME-versionen till 1.0 och innehรฅllstypen till text/html, och lรคgg sedan till HTML-kod i meddelandetexten. PHPMailer hanterar detta automatiskt nรคr du anger dess isHTML(true)-alternativ.

FILTER_SANITIZE_STRING รคr fรถrรฅldrad sedan PHP 8.1. Anvรคnd htmlspecialchars() fรถr att escape-utdata fรถr visning, eller en specifik validator som FILTER_VALIDATE_EMAIL, beroende pรฅ om du rensar eller kontrollerar vรคrdet.

Ja. Ange din SMTP-vรคrd, port och sรคkerhetstyp till AI, sรฅ kan den generera den fullstรคndiga PHP-filen.Mailkonfiguration med autentisering, avsรคndare, mottagare och felhantering. Lagra inloggningsuppgifter i miljรถvariabler, inte i kod.

Ja. AI kan ge rรฅd om SPF-, DKIM- och DMARC-poster, anvรคnda en autentiserad SMTP-avsรคndare, undvika spam-utlรถsare och ange en giltig Frรฅn-adress, och sedan hjรคlpa dig att testa leveransbarheten.

Sammanfatta detta inlรคgg med: