PHPMailer — мощная библиотека PHP с открытым исходным кодом, созданная в 2001 году. Несмотря на свой возраст, она остается одним из самых популярных инструментов для отправки электронных писем среди разработчиков. В этой статье разберём, как использовать PHPMailer вместо стандартной функции mail(), и рассмотрим её основные преимущества.
Функция mail() в PHP подходит для базовых задач, но ее возможности ограничены. Вот основные недостатки:
PHPMailer лишён этих проблем и предлагает:
Установить библиотеку можно через менеджер пакетов Composer. Выполните команду:
composer require phpmailer/phpmailer
Вот минимальный пример для отправки письма с локального сервера:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once "vendor/autoload.php"; $mail = new PHPMailer(true); // Включение исключений // Настройка отправителя и получателя $mail->setFrom("from@yourdomain.com", "Your Name"); $mail->addAddress("recipient@example.com", "Recipient Name"); // Настройка письма $mail->isHTML(true); $mail->Subject = "Тема письма"; $mail->Body = "Это HTML-сообщение"; $mail->AltBody = "Это текстовая версия письма."; try { $mail->send(); echo "Письмо успешно отправлено!"; } catch (Exception $e) { echo "Ошибка: " . $mail->ErrorInfo; } ?>
Чтобы добавить вложения, используйте метод addAttachment
:
$mail->addAttachment("path/to/file.txt", "File.txt"); // Вложение с именем $mail->addAttachment("path/to/image.png"); // Вложение без указания имен
PHPMailer поддерживает SMTP, что позволяет отправлять письма через внешние почтовые серверы, такие как Gmail. Пример настройки SMTP:
$mail->isSMTP(); $mail->Host = "mail.hostland.ru"; $mail->SMTPAuth = true; $mail->Username = "your@domain.com"; $mail->Password = "your_password"; $mail->SMTPSecure = "ssl"; $mail->Port = 465;
Как настроить SMTP для популярных CMS можно посмотреть в данной статье.
PHPMailer предоставляет удобные инструменты для отладки:
$mail->ErrorInfo
для получения подробной информации об ошибках;$mail->SMTPDebug = 3
;$mail->setLanguage("ru")
.Использование SMTP через PHPMailer помогает избежать проблем с пометкой писем как спам. Например, если вы отправляете письмо с адреса Gmail через локальный сервер, почтовые системы могут заблокировать его из-за несоответствия доменов. SMTP решает эту проблему.
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из