Maak een PHP-script voor geautomatiseerde e-mailnotificaties
description
Met deze prompt kan de gebruiker een betrouwbaar PHP-script maken voor automatische e-mailmeldingen die naadloos integreren met hun applicatie. Het helpt bij het voorkomen van misbruik en verhoogt de efficiëntie van communicatie, wat beter is dan handmatig e-mails versturen of standaard scripts zonder beveiliging.
prompt
Help me een PHP-script te ontwikkelen dat automatisch e-mailnotificaties verzendt op basis van specifieke gebeurtenissen in mijn applicatie. Beschrijf hoe ik triggers kan instellen, e-mailtemplates kan gebruiken, en hoe ik ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk, hier is een overzicht van hoe je een PHP-script kunt ontwikkelen voor automatische e-mailnotificaties bij de gebeurtenis "Nieuwe gebruiker registratie".
1. Triggers instellen:
- Gebruik een gebeurtenis in je applicatie die wordt geactiveerd bij een nieuwe registratie, bijvoorbeeld na het succesvol opslaan van de gebruiker in de database.
- Plaats het e-mailverzendingsscript direct na deze gebeurtenis of roep het aan via een event handler of queue.
2. E-mailtemplates gebruiken:
- Maak een HTML- of plain-text templatebestand met placeholders voor dynamische gegevens, bijvoorbeeld:
```html
<!-- email_template.html -->
<!DOCTYPE html>
<html>
<head>
<title>Welkom bij onze service</title>
</head>
<body>
<p>Welkom bij onze service, <strong>{{gebruikersnaam}}</strong>!</p>
</body>
</html>
```
- Laad het template in PHP en vervang de placeholders door daadwerkelijke waarden.
3. PHP-script voor verzending:
```php
<?php
function stuurWelkomstEmail($gebruikersnaam, $email) {
// Laad de template
$templatePath = 'email_template.html';
$template = file_get_contents($templatePath);
// Vervang placeholders
$emailContent = str_replace('{{gebruikersnaam}}', htmlspecialchars($gebruikersnaam), $template);
// E-mail headers
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: no-reply@jouwdomein.nl" . "\r\n";
// Verstuur e-mail
mail($email, "Welkom bij onze service", $emailContent, $headers);
}
?>
```
4. Triggers koppelen:
- Roep `stuurWelkomstEmail($gebruikersnaam, $email)` aan na het succesvol registreren van een gebruiker, bijvoorbeeld:
```php
// Na registratie
$gebruikersnaam = $_POST['gebruikersnaam'];
$email = $_POST['email'];
// Voeg gebruiker toe aan database...
// Als succesvol:
stuurWelkomstEmail($gebruikersnaam, $email);
```
5. Beveiliging tegen misbruik:
- Valideer en ontsmet alle invoergegevens.
- Beperk het aantal e-mails dat per tijdseenheid wordt verzonden (rate limiting).
- Gebruik SMTP met authenticatie in plaats van de PHP `mail()` functie voor meer controle en beveiliging.
- Voeg CAPTCHA toe bij registratie om bots te voorkomen.
- Log alle e-mailverzendacties en controleer op verdachte activiteiten.
Door deze stappen te volgen, maak je een robuust systeem dat automatisch e-mails verstuurt bij nieuwe registraties, met gebruik van templates en beveiligingsmaatregelen.
provider: deepseek
model: deepseek-chat
Hier is een gestructureerde aanpak voor je PHP e-mailnotificatiesysteem:
## 1. Basis Script Structuur
```php
<?php
class EmailNotificatie {
private $db;
private $mailer;
public function __construct($db_connection) {
$this->db = $db_connection;
$this->initMailer();
}
private function initMailer() {
// PHPMailer of native mail() configuratie
// Gebruik SMTP voor betrouwbaarheid
}
}
?>
```
## 2. Trigger Instellen (Gebruikersregistratie)
```php
public function handleNieuweRegistratie($gebruiker_id, $gebruikersnaam, $email) {
// Valideer en sanitize input
$gebruiker_id = filter_var($gebruiker_id, FILTER_VALIDATE_INT);
$gebruikersnaam = htmlspecialchars($gebruikersnaam);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if (!$gebruiker_id || !$email) {
return false;
}
// Controleer frequentie limiet
if ($this->checkRateLimit($email)) {
$this->sendWelkomEmail($gebruikersnaam, $email);
$this->logVerzending($gebruiker_id, 'welkom_email');
return true;
}
return false;
}
```
## 3. E-mail Template Systeem
```php
private function sendWelkomEmail($gebruikersnaam, $email) {
$template = $this->loadTemplate('welkom_email');
$bericht = str_replace(
['<gebruikersnaam>', '<datum>'],
[$gebruikersnaam, date('d-m-Y')],
$template
);
$onderwerp = "Welkom bij onze service, {$gebruikersnaam}!";
return $this->sendEmail($email, $onderwerp, $bericht);
}
private function loadTemplate($template_naam) {
$template_path = "templates/{$template_naam}.html";
if (file_exists($template_path)) {
return file_get_contents($template_path);
}
return "Welkom bij onze service, <gebruikersnaam>!";
}
```
## 4. Beveiligingsmaatregelen
```php
private function checkRateLimit($email) {
$limiet_per_uur = 5; // Max 5 e-mails per uur per adres
$timestamp = time() - 3600;
$query = "SELECT COUNT(*) as count FROM email_log
WHERE email = ? AND timestamp > ?";
$stmt = $this->db->prepare($query);
$stmt->execute([$email, $timestamp]);
$result = $stmt->fetch();
return $result['count'] < $limiet_per_uur;
}
private function validateEmail($email) {
// DNS MX record check
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
list($user, $domain) = explode('@', $email);
return checkdnsrr($domain, 'MX');
}
```
## 5. Gebruik in je Registratieproces
```php
// In je registratie script:
$emailNotificatie = new EmailNotificatie($db);
$emailNotificatie->handleNieuweRegistratie(
$nieuwe_gebruiker_id,
$gebruikersnaam,
$email
);
```
## 6. Aanvullende Beveiliging
- Gebruik SMTP authenticatie
- Implementeer DKIM/SPF records
- Voeg CAPTCHA toe bij registratie
- Log alle e-mailverzendingen
- Gebruik prepared statements voor database queries
## 7. Template Bestand (templates/welkom_email.html)
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welkom bij onze service!</title>
</head>
<body>
<h1>Welkom, <gebruikersnaam>!</h1>
<p>Bedankt voor je registratie op <datum>.</p>
<p>We hopen dat je onze service waardevol zult vinden.</p>
</body>
</html>
```
Dit systeem biedt een veilige en schaalbare oplossing voor automatische e-mailnotificaties met ingebouwde beveiliging tegen misbruik.