Email отправка на PHP: PHPMailer, SwiftMailer и mail() — полное руководство

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка email на PHP: обзор библиотек и инструментов

Email-рассылка — неотъемлемая часть любого веб-приложения: регистрация пользователей, сброс пароля, уведомления, маркетинговые кампании. В PHP есть несколько способов реализовать отправку писем: от встроенной функции mail() до специализированных библиотек, таких как PHPMailer и SwiftMailer. В этой статье мы подробно разберём каждый инструмент, его преимущества, недостатки и приведём практические примеры кода.

1. Встроенная функция mail()

Самый простой способ — использовать нативную функцию PHP mail(). Она не требует установки дополнительных библиотек, но имеет серьёзные ограничения.

Синтаксис

mail($to, $subject, $message, $headers, $parameters);

Пример отправки простого текстового письма

<?php
$to = 'user@example.com';
$subject = 'Приветствие';
$message = 'Здравствуйте! Это тестовое письмо.';
$headers = 'From: noreply@pythonlib.ru' . "\r\n" .
           'Reply-To: support@pythonlib.ru' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
    echo 'Письмо отправлено.';
} else {
    echo 'Ошибка отправки.';
}
?>

Недостатки mail()

  • Зависит от настроек сервера (sendmail, postfix и т.д.) — часто попадает в спам.
  • Не поддерживает HTML-письма и вложения без ручного формирования MIME-заголовков.
  • Отсутствует поддержка SMTP-аутентификации.
  • Сложно отлаживать ошибки.

Из-за этих ограничений для серьёзных проектов рекомендуется использовать специализированные библиотеки.

2. PHPMailer — самая популярная библиотека

PHPMailer — мощная и удобная библиотека для отправки email на PHP. Поддерживает HTML, вложения, SMTP-аутентификацию, шифрование TLS/SSL и множество других функций.

Установка

composer require phpmailer/phpmailer

Или скачайте вручную с GitHub.

Пример отправки HTML-письма через SMTP Gmail

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Настройки сервера
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your-email@gmail.com';
    $mail->Password   = 'your-app-password';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // Отправитель и получатель
    $mail->setFrom('from@example.com', 'Ваше имя');
    $mail->addAddress('user@example.com', 'Получатель');

    // Вложения
    $mail->addAttachment('/path/to/file.pdf', 'document.pdf');

    // Контент
    $mail->isHTML(true);
    $mail->Subject = 'Привет из PHPMailer';
    $mail->Body    = '<h1>Заголовок</h1><p>Это <b>HTML</b> письмо.</p>';
    $mail->AltBody = 'Текстовая версия для почтовых клиентов без HTML';

    $mail->send();
    echo 'Письмо отправлено.';
} catch (Exception $e) {
    echo "Ошибка: {$mail->ErrorInfo}";
}
?>

Преимущества PHPMailer

  • Простой и понятный API.
  • Поддержка всех современных почтовых протоколов.
  • Автоматическое кодирование вложений.
  • Хорошая документация и большое сообщество.

3. SwiftMailer — гибкая альтернатива

SwiftMailer — ещё одна популярная библиотека, которая предоставляет объектно-ориентированный интерфейс для отправки писем. В отличие от PHPMailer, она использует концепцию «транспортов» (Transport) и «сообщений» (Message).

Установка

composer require swiftmailer/swiftmailer ^6.0

Пример отправки письма через SMTP

<                    

Рекомендаций