Ошибка 550 5.6.0 Message rejected: plain text content cannot be empty означает, что SMTP-сервер отклонил письмо, потому что в нем отсутствует текстовая (plain text) версия содержимого.
Причина ошибки
Многие SMTP-серверы и почтовые системы требуют, чтобы письмо содержало как минимум текстовую версию. Если вы отправляете только HTML-версию без plain text, сервер может отклонить письмо с этой ошибкой.
Как исправить
1. Добавьте текстовую версию письма
При отправке через SMTP всегда включайте оба формата:
- HTML-версия: для красивого отображения
- Plain text версия: для почтовых клиентов, которые не поддерживают HTML
2. Правильная структура письма
Используйте multipart/alternative MIME-тип:
Content-Type: multipart/alternative; boundary="boundary123"
--boundary123
Content-Type: text/plain; charset=UTF-8
Это текстовая версия письма.
--boundary123
Content-Type: text/html; charset=UTF-8
<html>
<body>
<p>Это HTML-версия письма.</p>
</body>
</html>
--boundary123--
3. Если используете библиотеки для отправки
PHP (PHPMailer):
$mail->isHTML(true);
$mail->Body = '<h1>HTML версия</h1>';
$mail->AltBody = 'Текстовая версия письма'; // Обязательно!
Python:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative')
msg['Subject'] = 'Тема письма'
text = 'Текстовая версия'
html = '<html><body>HTML версия</body></html>'
msg.attach(MIMEText(text, 'plain'))
msg.attach(MIMEText(html, 'html'))
Node.js (Nodemailer):
const mailOptions = {
html: '<h1>HTML версия</h1>',
text: 'Текстовая версия письма' // Обязательно!
};
4. Если отправляете через ESP
Большинство ESP (RuSender, UniSender и др.) автоматически создают текстовую версию из HTML. Но если отправляете через собственный SMTP:
- Убедитесь, что в настройках включена генерация plain text
- Или добавьте текстовую версию вручную
Почему это важно
- Требования SMTP-серверов: многие серверы требуют plain text версию
- Совместимость: некоторые почтовые клиенты не поддерживают HTML
- Доставляемость: письма с обеими версиями лучше проходят фильтры
- Доступность: текстовые версии читаются программами чтения с экрана
Проверка перед отправкой
- Убедитесь, что в письме есть и HTML, и plain text версии
- Проверьте, что plain text версия не пустая
- Протестируйте отправку на тестовый адрес
- Используйте валидаторы email (Mail-Tester) для проверки структуры
Частые ошибки
- Только HTML: отправка только HTML-версии без текстовой
- Пустая текстовая версия: поле text есть, но оно пустое
- Неправильный MIME-тип: использование text/html вместо multipart/alternative
- Отсутствие boundary: неправильная структура multipart сообщения
Вывод: Ошибка возникает, когда письмо содержит только HTML-версию без текстовой. Добавьте plain text версию письма при отправке через SMTP. Используйте multipart/alternative MIME-тип и убедитесь, что обе версии (HTML и text) присутствуют и не пустые.