Hoe u e-mail verzendt met behulp van de PHP mail()-functie
โก Slimme samenvatting
PHP mail is de ingebouwde functie waarmee je rechtstreeks vanuit een PHP-script e-mails kunt verzenden via de SMTP-instellingen van de server. Deze handleiding behandelt de syntaxis en parameters van mail(), het configureren van SMTP in php.ini, het valideren van gebruikersinvoer met filter_var, het verzenden van beveiligde e-mail en het gebruik van PHP.Mailer voor betrouwbare levering.

Wat is PHP-mail?
PHP mail is de ingebouwde PHP-functie die wordt gebruikt om e-mails vanuit PHP-scripts te verzenden.
De mailfunctie accepteert de volgende parameters:
- E-mailadres
- Onderwerp
- Typ hier uw vraag of bericht
- CC- of BCC-e-mailadressen
Waarom en wanneer PHP-mail te gebruiken?
De mailfunctie is in veel situaties handig:
- Het is een kosteneffectieve manier om gebruikers op de hoogte te stellen van belangrijke gebeurtenissen.
- Geef gebruikers de mogelijkheid om via e-mail contact met u op te nemen door een contactformulier op de website te plaatsen waarmee de verstrekte inhoud per e-mail wordt verzonden.
- Ontwikkelaars kunnen het gebruiken om systeemfouten per e-mail te ontvangen.
- U kunt het gebruiken om e-mails te sturen naar uw nieuwsbriefabonnees.
- Je kunt het gebruiken om links voor het opnieuw instellen van wachtwoorden te sturen naar gebruikers die hun wachtwoord vergeten zijn.
- Je kunt het gebruiken om activerings- en bevestigingslinks via e-mail te versturen. Dit is handig bij het registreren van gebruikers en het verifiรซren van hun e-mailadressen.
E-mail verzenden met PHP
De PHP-mailfunctie heeft de volgende basissyntaxis.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
HIER,
- โ$to_email_addressโ is het e-mailadres van de ontvanger van de e-mail
- โ$subjectโ is het e-mailonderwerp
- โ$messageโ is het bericht dat moet worden verzonden.
- โ[$headers]โ is optioneel; het kan worden gebruikt om informatie zoals CC en BCC toe te voegen.
- CC is de afkorting voor carbon copy (kopie). Het wordt gebruikt wanneer je een kopie wilt sturen naar een belanghebbende, bijvoorbeeld een e-mail met een klacht die naar een bedrijf wordt gestuurd, kan ook als CC naar de klachtencommissie worden verzonden.
- BCC is de afkorting voor blind carbon copy (blinde kopie). Het is vergelijkbaar met CC, maar de e-mailadressen in het BCC-veld worden niet aan de andere ontvangers getoond.
Eenvoudig Mail Transmission Protocol (SMTP)
PHP-mail gebruikt Simple. Mail Transmission Protocol (SMTP) om e-mail te verzenden.
Op een gehoste server zijn de SMTP-instellingen al geconfigureerd.
De SMTP-mailinstellingen kunnen worden geconfigureerd via het bestand "php.ini" in de PHP-installatiemap.
Om de SMTP-instellingen op uw localhost te configureren, ervan uitgaande dat u XAMPP gebruikt op WindowsZoek het bestand โphp.iniโ in de map โC:\xampp\phpโ.
- Open het bestand met Kladblok of een andere teksteditor. In dit voorbeeld gebruiken we Kladblok. Klik op het menu 'Bewerken'.
- Klik op het menu 'Zoekenโฆ'
- Het dialoogvenster 'Zoeken' verschijnt.
- Klik op de knop 'Volgende zoeken'.
Zoek de vermeldingen onder [mailfunctie]. De standaardregels zien er meestal als volgt uit:
- ; SMTP = localhost
- ; smtp_poort = 25
Verwijder de puntkomma's voor SMTP en smtp_port en stel SMTP in op uw SMTP-server en de poort naar uw SMTP-poort. Uw instellingen zouden er als volgt uit moeten zien:
- SMTP = smtp.voorbeeld.com
- smtp_poort = 25
Let op: de SMTP-instellingen kunt u opvragen bij uw webhostingprovider. Als de server authenticatie vereist, voeg dan de volgende regels toe:
- auth_gebruikersnaam = voorbeeld_gebruikersnaam@voorbeeld.com
- auth_password = voorbeeld_wachtwoord
Sla de nieuwe wijzigingen op en herstart het systeem. apache server.
PHP Mail Voorbeeld
Laten we nu eens kijken naar een voorbeeld waarbij een eenvoudige e-mail wordt verzonden.
<?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:
Let op: het bovenstaande voorbeeld gebruikt alleen de 4 verplichte parameters. U dient het fictieve e-mailadres te vervangen door een echt e-mailadres.
E-mailgebruikersinvoer opschonen
In het bovenstaande voorbeeld worden voor het gemak hard gecodeerde waarden in de broncode gebruikt voor het e-mailadres en andere details.
Stel dat u een contactformulier moet maken waar gebruikers hun gegevens invullen en het vervolgens verzenden.
- Gebruikers kunnen per ongeluk of opzettelijk code in de headers injecteren, wat kan leiden tot het versturen van spammails.
- Om uw systeem tegen dergelijke aanvallen te beschermen, kunt u een aangepaste functie maken die de waarden opschoont en valideert voordat de e-mail wordt verzonden.
Laten we een aangepaste functie maken die het e-mailadres valideert en opschoont met behulp van de ingebouwde functie `filter_var`. De functie `filter_var` wordt gebruikt om gebruikersinvoer te valideren en op te schonen.
De basissyntaxis is als volgt.
<?php filter_var($field, SANITIZATION_TYPE); ?>
HIER,
- โfilter_var(โฆ)โ is de validatie- en opschoningsfunctie
- โ$fieldโ is de waarde van het veld dat moet worden gefilterd.
- โSANITIZATION_TYPEโ is het type ontsmetting dat op het veld moet worden uitgevoerd, bijvoorbeeld:
- FILTER_VALIDATIE_EMAIL โ retourneert true voor geldige e-mailadressen en false voor ongeldige e-mailadressen.
- E-MAIL_FILTER_SANITIZE โ verwijdert ongeldige tekens uit e-mailadressen, waardoor een adres met ongewenste tekens wordt teruggebracht tot info@domein.com.
- FILTER_SANITIZE_URL โ verwijdert ongeldige tekens uit URLs, waardoor een schoon adres overblijft zoals https://www.example.com.
- FILTER_SANITIZE_STRING โ verwijdert tags uit tekenreekswaarden, dus 'am bold' wordt 'am bold'. Let op: dit filter is verouderd in PHP 8.1; gebruik in plaats daarvan htmlspecialchars().
De onderstaande code gebruikt een aangepaste functie om beveiligde e-mail te verzenden.
<?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:
Beveilig Mail
E-mails kunnen tijdens de verzending worden onderschept door onbedoelde ontvangers.
Hierdoor kan de inhoud van de e-mail bij onbedoelde ontvangers terechtkomen.
Beveiligde e-mail lost dit probleem op door transmitHet versturen van e-mails via een versleutelde verbinding met behulp van SSL of TLS, bijvoorbeeld SMTP via SSL op poort 465 of STARTTLS op poort 587.
Versleuteling codeert het bericht voordat het wordt verzonden, zodat alleen de mailserver van de beoogde ontvanger het kan lezen.
PHPMailer: Een beter alternatief voor mail()
Voor daadwerkelijke toepassingen gebruiken de meeste ontwikkelaars PHP.MailGebruik de `er`-bibliotheek in plaats van de `mail()`-functie. PHPMailDe e-mailserver maakt gebruik van een externe SMTP-server, wat de leverbaarheid aanzienlijk verbetert, en vereenvoudigt het verzenden van bijlagen en HTML-e-mails.
Installeer het met Composer en verstuur vervolgens e-mail via een geauthenticeerde, versleutelde SMTP-verbinding zoals hieronder weergegeven.
<?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(); ?>
Vergeleken met mail(), PHPMailER biedt SMTP-authenticatie, ingebouwde versleuteling, ondersteuning voor bijlagen en een duidelijkere foutafhandeling, waardoor het de aanbevolen keuze is voor e-mail in productieomgevingen.






