Jak wysłać e-mail za pomocą funkcji PHP mail()
⚡ Inteligentne podsumowanie
PHP mail to wbudowana funkcja, która wysyła e-maile bezpośrednio ze skryptu PHP, korzystając z ustawień SMTP serwera. Ten przewodnik obejmuje składnię i parametry funkcji mail(), konfigurowanie SMTP w pliku php.ini, oczyszczanie danych wprowadzanych przez użytkownika za pomocą funkcji filter_var, wysyłanie bezpiecznej poczty oraz korzystanie z PHP.Maildla niezawodnej dostawy.

Czym jest poczta PHP?
PHP mail to wbudowana funkcja PHP służąca do wysyłania wiadomości e-mail ze skryptów PHP.
Funkcja mail akceptuje następujące parametry:
- Adres e-mail
- Temat
- Treść wiadomości
- Adresy e-mail DW lub UDW
Dlaczego i kiedy używać poczty PHP
Funkcja poczty przydaje się w wielu sytuacjach:
- Jest to ekonomiczny sposób powiadamiania użytkowników o ważnych zdarzeniach.
- Pozwól użytkownikom na skontaktowanie się z Tobą za pośrednictwem poczty elektronicznej, udostępniając formularz kontaktowy na stronie internetowej, z którego wysyłana jest na podany adres e-mail udostępniona treść.
- Programiści mogą używać tej funkcji do otrzymywania powiadomień o błędach systemowych pocztą e-mail.
- Możesz go użyć do wysyłania wiadomości e-mail do subskrybentów swojego newslettera.
- Za jego pomocą możesz wysyłać użytkownikom, którzy zapomnieli hasła, linki umożliwiające zresetowanie hasła.
- Możesz go użyć do wysłania linków aktywacyjnych i potwierdzających e-mailem. Jest to przydatne podczas rejestracji użytkowników i weryfikacji ich adresów e-mail.
Wysyłanie poczty za pomocą PHP
Funkcja mail w PHP ma następującą podstawową składnię.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
TUTAJ,
- „$to_email_address” to adres e-mail odbiorcy wiadomości
- „$subject” to temat wiadomości e-mail
- „$message” to wiadomość, która ma zostać wysłana.
- Parametr „[$headers]” jest opcjonalny. Można go użyć do podania informacji takich jak DW i UDW.
- CC to akronim od „carbon copy”. Używa się go, gdy chcesz wysłać kopię zainteresowanej osobie, np. e-mail z reklamacją wysłany do firmy może być również wysłany jako CC do działu reklamacji.
- BCC to skrót od „ukrytej kopii”. Jest podobny do DW, ale adresy e-mail zawarte w sekcji UDW nie są widoczne dla innych odbiorców.
Prosty Mail Transmission Protokół (SMTP)
Poczta PHP używa Simple Mail Transmission Protokół (SMTP) do wysyłania poczty.
Na serwerze hostowanym ustawienia SMTP byłyby już skonfigurowane.
Ustawienia poczty SMTP można skonfigurować w pliku „php.ini” w folderze instalacyjnym PHP.
Aby skonfigurować ustawienia SMTP na komputerze lokalnym, zakładając, że używasz XAMPP na komputerze Windows, zlokalizuj plik „php.ini” w katalogu „C:\xampp\php”.
- Otwórz go za pomocą Notatnika lub dowolnego edytora tekstu. W tym przykładzie użyjemy Notatnika. Kliknij menu Edycja.
- Kliknij menu Znajdź…
- Pojawi się okno dialogowe Znajdź
- Kliknij przycisk Znajdź następny
Znajdź wpisy w sekcji [funkcja poczty]. Domyślne linie zazwyczaj wyglądają tak:
- ; SMTP = host lokalny
- ; smtp_port = 25
Usuń średniki przed SMTP i smtp_port i ustaw SMTP na Serwer SMTP a port do portu SMTP. Twoje ustawienia powinny wyglądać następująco:
- SMTP = smtp.example.com
- smtp_port = 25
Uwaga: ustawienia SMTP można uzyskać od dostawcy hostingu. Jeśli serwer wymaga uwierzytelnienia, dodaj następujące wiersze:
- auth_username = przykładowa nazwa_użytkownika@example.com
- auth_password = przykładowe hasło
Zapisz nowe zmiany i uruchom ponownie Apache serwer.
PHP Mail Przykład
Przyjrzyjmy się teraz przykładowi wysyłania prostego maila.
<?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); ?>
Wyjście:
Uwaga: powyższy przykład przyjmuje tylko 4 obowiązkowe parametry. Należy zastąpić powyższy fikcyjny adres e-mail prawdziwym adresem e-mail.
Dezynfekcja danych wprowadzanych przez użytkowników w wiadomościach e-mail
W powyższym przykładzie, dla uproszczenia, wykorzystano zakodowane na stałe wartości adresu e-mail i innych szczegółów w kodzie źródłowym.
Załóżmy, że musisz utworzyć formularz kontaktowy, w którym użytkownicy wpisują dane, a następnie przesyłają formularz.
- Użytkownicy mogą przypadkowo lub celowo wstrzyknąć kod do nagłówków, co może skutkować wysyłaniem spamu.
- Aby zabezpieczyć swój system przed takimi atakami, możesz utworzyć niestandardową funkcję, która oczyszcza i weryfikuje wartości przed wysłaniem wiadomości e-mail.
Utwórzmy funkcję niestandardową, która weryfikuje i czyści adres e-mail za pomocą wbudowanej funkcji filter_var. Funkcja filter_var służy do czyszczenia i walidacji danych wprowadzanych przez użytkownika.
Ma następującą podstawową składnię.
<?php filter_var($field, SANITIZATION_TYPE); ?>
TUTAJ,
- „filter_var(…)” to funkcja sprawdzania poprawności i oczyszczania
- „$pole” to wartość pola, które ma być filtrowane.
- „SANITIZATION_TYPE” to rodzaj dezynfekcji, która ma zostać przeprowadzona na boisku, na przykład:
- FILTRUJ_WALIDUJ_E-MAIL – zwraca wartość true w przypadku prawidłowych adresów e-mail i false w przypadku nieprawidłowych adresów e-mail.
- FILTRUJ_SANIZUJ_EMAIL – usuwa niedozwolone znaki z adresów e-mail, dzięki czemu adres zawierający zbędne znaki zostaje zredukowany do info@domena.com.
- FILTRUJ_SANIZUJ_URL – usuwa nielegalne znaki z URLs, pozostawiając czysty adres, taki jak https://www.example.com.
- FILTER_SANITIZE_STRING – usuwa znaczniki z wartości ciągu, więc „am bold” staje się „am bold”. Uwaga: ten filtr jest przestarzały w PHP 8.1; zamiast niego użyj funkcji htmlspecialchars().
Poniższy kod wykorzystuje niestandardową funkcję do wysyłania bezpiecznej poczty.
<?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"; } ?>
Wyjście:
Zabezpiecz Mail
Wiadomości e-mail mogą zostać przechwycone w trakcie transmisji przez niepowołanych odbiorców.
Może to spowodować ujawnienie treści wiadomości e-mail nieupoważnionym odbiorcom.
Bezpieczna poczta rozwiązuje ten problem poprzez transmitwysyłanie wiadomości e-mail przez szyfrowane połączenie przy użyciu protokołu SSL lub TLS, na przykład SMTP przez SSL na porcie 465 lub STARTTLS na porcie 587.
Szyfrowanie polega na szyfrowaniu wiadomości przed jej wysłaniem, tak aby mógł ją odczytać tylko serwer pocztowy docelowego odbiorcy.
PHPMailer: Lepsza alternatywa dla mail()
W przypadku rzeczywistych aplikacji większość programistów korzysta z języka PHPMailbiblioteka er zamiast surowej funkcji mail(). PHPMailer uwierzytelnia się za pomocą zewnętrznego serwera SMTP, co znacznie poprawia dostarczalność i ułatwia wysyłanie załączników oraz wiadomości e-mail w formacie HTML.
Zainstaluj go za pomocą Composera, a następnie wysyłaj pocztę przez uwierzytelnione, szyfrowane połączenie SMTP, jak pokazano poniżej.
<?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(); ?>
W porównaniu z mail(), PHPMailer zapewnia uwierzytelnianie SMTP, wbudowane szyfrowanie, obsługę załączników i bardziej przejrzystą obsługę błędów, dlatego jest to zalecany wybór do użytku w środowisku produkcyjnym.






