1. Formularz do wysyłania e‑maili
Uzupełnij poniższy formularz, aby wysłać testową wiadomość. W pliku send_email.php zdecydujesz, czy użyć funkcji mail(), czy PHPMailer.
2. Przykład: funkcja mail()
Prosty sposób wysyłania e‑maila to wbudowana w PHP funkcja mail(). Działa, jeśli serwer ma poprawnie skonfigurowany system pocztowy.
<?php
// send_email.php — wersja z mail()
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$recipient = $_POST['recipient'] ?? '';
$subject = $_POST['subject'] ?? '';
$message = $_POST['message'] ?? '';
// Prosta walidacja
if (!filter_var($recipient, FILTER_VALIDATE_EMAIL)) {
echo "Nieprawidłowy adres e-mail odbiorcy.";
exit;
}
// Nagłówki (nadawca, odpowiedź)
$headers = "From: webmaster@example.com\r\n";
$headers .= "Reply-To: webmaster@example.com\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
if (mail($recipient, $subject, $message, $headers)) {
echo "Wiadomość została wysłana (mail()).";
} else {
echo "Wystąpił problem podczas wysyłania wiadomości (mail()).";
}
}
?>
3. Przykład: PHPMailer (SMTP)
PHPMailer pozwala wysyłać wiadomości przez serwer SMTP (np. Gmail, hosting), wspiera HTML, załączniki i lepszą obsługę błędów. Wymaga wcześniejszej instalacji (np. Composerem).
<?php
// send_email.php — uproszczona wersja z PHPMailer
// composer require phpmailer/phpmailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['use_phpmailer'])) {
$recipient = $_POST['recipient'] ?? '';
$subject = $_POST['subject'] ?? '';
$message = $_POST['message'] ?? '';
if (!filter_var($recipient, FILTER_VALIDATE_EMAIL)) {
echo "Nieprawidłowy adres e-mail odbiorcy.";
exit;
}
$mail = new PHPMailer(true);
try {
// Ustawienia SMTP (dostosuj do swojego serwera)
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // serwer SMTP
$mail->SMTPAuth = true;
$mail->Username = 'twoj_email@example.com';
$mail->Password = 'twoje_haslo';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Nadawca i odbiorca
$mail->setFrom('twoj_email@example.com', 'Webmaster');
$mail->addAddress($recipient);
// Treść wiadomości
$mail->isHTML(false); // zwykły tekst
$mail->Subject = $subject;
$mail->Body = $message;
$mail->send();
echo "Wiadomość została wysłana (PHPMailer).";
} catch (Exception $e) {
echo "Błąd wysyłania (PHPMailer): {$mail->ErrorInfo}";
}
}
?>
4. Kiedy użyć mail(), a kiedy PHPMailer?
mail()— szybki prototyp, proste powiadomienia tekstowe, gdy serwer ma poprawnie skonfigurowaną pocztę.- PHPMailer — aplikacje produkcyjne, SMTP (Gmail, hosting), wiadomości HTML, załączniki, lepsza obsługa błędów.
- W praktyce do serwisów dla użytkowników zwykle wybieramy PHPMailer lub podobną bibliotekę.
5. Zadanie dla Ciebie
- Skonfiguruj
send_email.php, żeby: – gdy checkbox PHPMailer jest zaznaczony, używał PHPMailer, – w przeciwnym razie funkcjimail(). - Przetestuj wysyłanie na różne adresy (np. swój szkolny e‑mail) i sprawdź, co częściej trafia do spamu.