При отправке писем из WordPress важно учитывать, что разные почтовые клиенты по-разному отображают содержимое. Чтобы обеспечить корректное отображение и повысить доставляемость, часто используют многоформатные письма, которые содержат одновременно HTML и plain text версии. В этой статье подробно рассмотрим, как создавать такие письма с помощью кода и популярных плагинов, а также как интегрировать их в WordPress.
Почему важен многоформатный шаблон письма в WordPress
Многоформатное письмо (multipart/alternative) — это сообщение, которое содержит две версии контента: HTML и plain text. Почтовый клиент выбирает, какую версию показать в зависимости от настроек пользователя и возможностей клиента.
Основные преимущества:
- Максимальная совместимость — пользователи с ограниченными почтовыми клиентами увидят текстовую версию.
- Улучшенная доставляемость — меньше шансов, что письмо попадет в спам.
- Более приятный дизайн — HTML-версия позволяет использовать стили, изображения, кнопки.
Поэтому при создании рассылок на WordPress стоит всегда реализовывать оба формата.
Создание многоформатного шаблона письма с помощью кода
WordPress использует класс PHPMailer для отправки писем, который поддерживает многоформатные письма. Ниже пример функции, которая формирует и отправляет письмо с двумя частями.
function wpmail_send_multipart_email($to, $subject, $html_content, $plain_content) {
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isMail(); // Используем mail() или замените на SMTP по необходимости
$mail->setFrom('no-reply@yourdomain.com', 'Ваш сайт');
$mail->addAddress($to);
$mail->Subject = $subject;
// Добавляем текстовую часть
$mail->AltBody = $plain_content;
// Добавляем HTML часть
$mail->msgHTML($html_content);
if(!$mail->send()) {
error_log('Mailer Error: ' . $mail->ErrorInfo);
return false;
} else {
return true;
}
}Вызывайте функцию так:
wpmail_send_multipart_email(
'user@example.com',
'Тема письма',
'<h1>Привет!</h1><p>Это HTML-сообщение.</p>',
'Привет!\nЭто простое текстовое сообщение.'
);Такой подход гарантирует, что письмо будет корректно отображаться в большинстве почтовых клиентов.
Автоматическая генерация plain text из HTML
Чтобы не писать plain text вручную, можно использовать библиотеку, которая конвертирует HTML в текст. Например, html2text или встроенные функции PHP. Вот простой пример:
function wpmail_html_to_plain_text($html) {
$text = strip_tags($html); // Удаляем теги
$text = html_entity_decode($text, ENT_QUOTES | ENT_HTML5);
$text = preg_replace('/\s+/', ' ', $text); // Убираем лишние пробелы
return trim($text);
}Используйте эту функцию для генерации текстовой версии перед отправкой.
Использование плагинов для создания многоформатных писем
Если вы предпочитаете не писать код, можно воспользоваться плагинами, которые облегчают создание и отправку многоформатных писем.
Плагин WP Mail SMTP
Этот популярный плагин не только помогает настроить SMTP, но и позволяет создавать шаблоны писем с HTML и текстовой версией. В сочетании с расширениями, например, WP Mail SMTP Pro вы получите расширенные возможности по кастомизации писем.
Плагин Email Templates
Позволяет создавать визуальные шаблоны писем с HTML и автоматически генерирует текстовую версию. Хорошо интегрируется с WooCommerce и другими системами, поддерживает кастомизацию.
Как интегрировать многоформатные письма в WordPress-рассылки
Для массовых рассылок можно использовать плагины, поддерживающие многоформатный вывод, например, WPGPT или My Popup для сбора подписчиков и последующей отправки писем.
Если вы пишете собственный код для отправки писем, то придерживайтесь следующих рекомендаций:
- Используйте функцию
wpmail_send_multipart_emailдля формирования писем. - Подключайте SMTP-сервер через WP Mail SMTP или напрямую через PHPMailer.
- Проверяйте корректность отображения в разных почтовых клиентах, например, с помощью Litmus или Email on Acid.
Пример расширенной функции с подключением SMTP
function wpmail_send_smtp_multipart_email($to, $subject, $html_content, $plain_content) {
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
try {
// Настройка SMTP
$mail->isSMTP();
$mail->Host = 'smtp.yourprovider.com';
$mail->SMTPAuth = true;
$mail->Username = 'smtp_user';
$mail->Password = 'smtp_password';
$mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('no-reply@yourdomain.com', 'Ваш сайт');
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->AltBody = $plain_content;
$mail->msgHTML($html_content);
$mail->send();
return true;
} catch (Exception $e) {
error_log('Mailer Error: ' . $mail->ErrorInfo);
return false;
}
}Советы по улучшению шаблонов писем
Чтобы ваши многоформатные письма работали максимально эффективно, учитывайте следующие моменты:
- Делайте текстовую версию понятной и читаемой.
- Избегайте сложных CSS-стилей в HTML, используйте inline-стили.
- Проверяйте корректность ссылок и изображений.
- Добавляйте ссылки для отписки и контакты службы поддержки.
Используйте сервисы проверки показа писем в разных клиентах.
Заключение
Создание многоформатных писем — важный шаг для улучшения коммуникации с пользователями на WordPress-сайте. Вы можете реализовать это как с помощью собственного кода, так и используя готовые плагины. Главное — обеспечить корректное отображение и доставляемость, чтобы ваши письма всегда доходили и были удобочитаемы.