W tym tutorialu dowiesz się, jak wysłać wiadomość e-mail z poziomu PHP. Możemy użyć dwóch metod: wbudowanej funkcji mail()
lub popularnej klasy PHPMailer. Przejdźmy krok po kroku.
1. Formularz do wysyłania e-maili
Na początek, tworzymy prosty formularz, który pozwala użytkownikowi wprowadzić dane do wysyłki wiadomości.
2. Przykład 1: Funkcja mail()
Funkcja mail()
jest wbudowaną funkcją PHP, która pozwala na wysyłanie e-maili. Oto przykładowy kod, który wysyła wiadomość e-mail bez potrzeby używania żadnych dodatkowych bibliotek:
Po przesłaniu formularza, PHP wykona funkcję mail()
, która wysyła wiadomość e-mail do podanego odbiorcy.
<?php
// Funkcja wysyłania maila
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$recipient = $_POST['recipient'];
$subject = $_POST['subject'];
$message = $_POST['message'];
// Wysyłanie maila
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($recipient, $subject, $message, $headers)) {
echo "Wiadomość została wysłana!";
} else {
echo "Wystąpił problem podczas wysyłania wiadomości.";
}
}
?>
3. Przykład 2: PHPMailer
PHPMailer to rozszerzenie PHP, które pozwala na wysyłanie bardziej zaawansowanych wiadomości, takich jak HTML z załącznikami. Poniżej znajduje się przykład użycia PHPMailer:
W tym przypadku, przed użyciem PHPMailer, musisz go zainstalować (przez Composer), aby działał poprawnie. PHPMailer obsługuje serwery SMTP, umożliwiając bezpieczniejsze wysyłanie wiadomości e-mail.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$recipient = $_POST['recipient'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // Zastąp odpowiednim serwerem SMTP
$mail->SMTPAuth = true;
$mail->Username = 'your_email@example.com'; // Zastąp odpowiednim adresem
$mail->Password = 'your_password'; // Zastąp odpowiednim hasłem
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('your_email@example.com', 'Webmaster');
$mail->addAddress($recipient);
$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->send();
echo "Wiadomość została wysłana!";
} catch (Exception $e) {
echo "Wystąpił problem podczas wysyłania wiadomości: {$mail->ErrorInfo}";
}
}
?>
4. Co warto wiedzieć?
Funkcja mail()
jest bardzo prosta, ale ma ograniczenia, takie jak brak zaawansowanej obsługi formatów (np. HTML), brak obsługi załączników i większych plików, czy też możliwość trafienia do folderu spam w niektórych przypadkach.
PHPMailer to potężniejsze narzędzie, które umożliwia wysyłanie wiadomości HTML, dodawanie załączników, lepszą obsługę serwerów SMTP oraz inne zaawansowane funkcje.
5. Ćwiczenie:
Twoje zadanie to: przepisz oba kody (zarówno funkcję mail(), jak i PHPMailer) w swoim edytorze PHP i sprawdź, jak różnią się oba rozwiązania. Użyj formularza do wysyłania testowych wiadomości i sprawdź, która metoda działa najlepiej w Twoim przypadku!