Wysyłanie e-maili za pomocą PHPMailer

Aby wysyłać e-maile za pomocą PHPMailer, zainstaluj phpmailer/phpmailer przez Composera, skonfiguruj serwer SMTP i tryb TLS za pomocą isSMTP(), a następnie wywołaj $mail->send() w bloku try/catch.

Wbudowana w PHP funkcja mail() przekazuje wiadomości do lokalnego pliku binarnego sendmail bez uwierzytelniania SMTP, bez negocjacji TLS i bez ustrukturyzowanego raportowania błędów. PHPMailer dodaje do aplikacji PHP klienta SMTP, formatowanie MIME i obsługę załączników.

Jak zainstalować PHPMailer?

Użyj Composera:

composer require phpmailer/phpmailer

Następnie załaduj autoloader i zaimportuj potrzebne klasy:

<?php
require "vendor/autoload.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Jak skonfigurować SMTP i wysłać wiadomość?

Utwórz instancję PHPMailer, przełącz ją w tryb SMTP za pomocą isSMTP(), a potem ustaw pola połączenia i wiadomości. Opakuj wywołanie w try/catch, żeby nieudana wysyłka została zgłoszona, a nie pominięta:

<?php
$mail = new PHPMailer(true); // true enables exceptions

try {
    // Server settings
    $mail->isSMTP();
    $mail->Host       = "smtp.example.com";
    $mail->SMTPAuth   = true;
    $mail->Username   = getenv("SMTP_USER");
    $mail->Password   = getenv("SMTP_PASS");
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // Recipients
    $mail->setFrom("you@yourdomain.com", "Your App");
    $mail->addAddress("recipient@example.org", "Recipient Name");

    // Content
    $mail->isHTML(true);
    $mail->Subject = "Your receipt";
    $mail->Body    = "<p>Thanks for your order.</p>";
    $mail->AltBody = "Thanks for your order. This is the plain-text version.";

    $mail->send();
    echo "Message sent.";
} catch (Exception $e) {
    echo "Send failed: {$mail->ErrorInfo}";
}

Dopasuj SMTPSecure do portu serwera: ENCRYPTION_STARTTLS na porcie 587 podnosi nieszyfrowane połączenie do TLS, a ENCRYPTION_SMTPS na porcie 465 negocjuje TLS od razu. Ustawienie isHTML(true) oznacza Body jako HTML i dołącza AltBody jako część tekstową dla klientów, które nie renderują HTML. Dołączenie obu części poprawia też dostarczalność. Przekazanie true do konstruktora sprawia, że błędy rzucają Exception zamiast zwracać false.

Jak dodać załącznik?

Wywołaj addAttachment ze ścieżką do pliku przed send():

<?php
$mail->addAttachment("./invoices/invoice-1042.pdf", "invoice.pdf");

Drugi argument zmienia nazwę pliku widoczną dla odbiorcy. Możesz wywołać tę metodę wielokrotnie, aby dodać wiele załączników.

Wyślij za pomocą Bird

Aby wysyłać e-maile z PHP przez HTTPS bez zarządzania połączeniem SMTP, zainstaluj Bird PHP SDK (composer require messagebird/sdk) i wywołaj $bird->email->send():

<?php
use MessageBird\Bird;

$bird = new Bird(apiKey: getenv("BIRD_API_KEY"));

$message = $bird->email->send(
    from: "onboarding@messagebird.dev",
    to: ["delivered@messagebird.dev"],
    subject: "Hello from PHP",
    html: "<p>It works.</p>",
);

echo $message->getId(), " ", $message->getStatus(), "\n";

Nadawca onboarding@messagebird.dev i odbiorca sandboxowy delivered@messagebird.dev pozwalają sprawdzić klucz API i ładunek, zanim skonfigurujesz własną domenę.

Buduj na tej samej sieci.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i zweryfikowaniu nadawcy.

Start building with Bird in minutes.