Почему при отправке почты через Gmail в 1С возникает ошибка SMTP 555 и как её исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При реализации программной рассылки сообщений через почтовые сервисы разработчики 1С нередко сталкиваются с ошибками на этапе вызова метода Послать() объекта ИнтернетПочта. Одной из таких распространенных проблем является ошибка с кодом SMTP error code 555 (сообщение сервера: «MAIL FROM/RCPT TO parameters not recognized or not implemented»). Разберем причины возникновения этой ситуации и приведем готовый работающий алгоритм отправки сообщений через сервер Gmail.

Анализ проблемы: почему почтовый сервер возвращает ошибку 555

Проанализируем процесс отправки электронного письма по протоколу SMTP. Перед передачей тела сообщения почтовый клиент 1С взаимодействует с сервером с помощью стандартных команд конверта:

  1. Команда MAIL FROM указывает серверу адрес отправителя, на который будут направляться уведомления об ошибках доставки.
  2. Команда RCPT TO указывает адрес непосредственного получателя.

Если в коде 1С в свойство Отправитель или в список Получатели передана произвольная текстовая строка (например, наименование компании, ФИО сотрудника или адрес с некорректными спецсимволами), почтовый сервер не может распознать структуру команды. Сервер Gmail ожидает строго стандартизированный синтаксис email-адреса. В результате сервер возвращает ошибку 555, сообщая, что переданные параметры не соответствуют стандарту.

Частая ошибка разработчиков заключается в путанице между свойствами Отправитель и ИмяОтправителя объекта ИнтернетПочтовоеСообщение:

  1. Свойство Отправитель — должно содержать только чистый email-адрес (например, user@domain.com). Сюда нельзя помещать имена, пробелы, кавычки или скобки формата Иван <ivan@domain.com>.
  2. Свойство ИмяОтправителя — предназначено именно для отображаемого понятного имени (например, ООО "Ромашка" или Служба поддержки).

Пошаговое исправление кода отправки

Разберем по шагам, как правильно инициализировать почтовое сообщение и почтовый профиль для отправки через smtp.gmail.com.

Посмотрим на пример правильного формирования объекта ИнтернетПочтовоеСообщение:


Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = "Тестовое уведомление из 1С";

// Обязательно указываем корректный email-адрес отправителя:
Письмо.Отправитель = "myaccount@gmail.com";

// Отображаемое имя человека или организации задаем отдельно:
Письмо.ИмяОтправителя = "Отдел логистики";

// Добавляем получателя (строго валидный email):
Письмо.Получатели.Добавить("recipient@example.com");

// Формируем тело письма
Текст = Письмо.Тексты.Добавить("Здравствуйте! Документ успешно сформирован.");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;

Настройка профиля и отправка письма через ИнтернетПочта

Рассмотрим подробнее параметры объекта ИнтернетПочтовыйПрофиль. При работе с Gmail важно соблюдать следующие требования:

  1. Порт и протокол шифрования: Для защищенного соединения SSL используется порт 465. Обратите внимание, что свойство ПортSMTP принимает числовое значение, поэтому указывать порт следует числом (465), а не строкой ("465"). Свойство ИспользоватьSSLSMTP необходимо установить в значение Истина.
  2. Пароль приложения: Сервис Gmail блокирует базовую авторизацию по основному паролю от учетной записи. Для успешной отправки необходимо включить в Google-аккаунте двухэтапную аутентификацию и сгенерировать отдельный 16-значный пароль приложения, который и подставляется в свойство ПарольSMTP. На платформах начиная с версии 8.3.24 альтернативно доступно свойство ТокенДоступа для авторизации по протоколу OAuth 2.0.
  3. Соответствие отправителя логину: Gmail строго сопоставляет авторизованного пользователя и адрес отправителя. Если адрес в Письмо.Отправитель отличается от адреса в Профиль.ПользовательSMTP, сервер либо заменит его на авторизованный ящик, либо заблокирует отправку, если альтернативный адрес не настроен в Gmail как доверенный псевдоним.
  4. Корректность доменов: Если используются кириллические домены (в зоне .рф), их необходимо предварительно транслитерировать в формат Punycode, чтобы сервер не отклонил команду из-за отсутствия поддержки протокола SMTPUTF8.

Объединим настройки и посмотрим на готовый рабочий модуль отправки:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.gmail.com";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.POP3ПередSMTP = Ложь;

// Учетные данные пользователя
Профиль.ПользовательSMTP = "myaccount@gmail.com";
Профиль.ПарольSMTP = "abcd efgh ijkl mnop"; // Специальный пароль приложения (16 символов)
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.Таймаут = 60;

// Инициализация объекта работы с почтой
Почта = Новый ИнтернетПочта;

Попытка
    Почта.Подключиться(Профиль);
    Почта.Послать(Письмо);
    Сообщить("Письмо успешно отправлено!");
Исключение
    Сообщить("Ошибка при отправке почты: " + ОписаниеОшибки());
КонецПопытки;

// Корректно завершаем сеанс
Если Почта.Подключена() Тогда
    Почта.Отключиться();
КонецЕсли;

Резюме

Выяснив природу ошибки SMTP 555, мы видим, что она почти всегда свидетельствует о невалидном формате почтового ящика в заголовках. Разделение текстового имени и фактического адреса электронной почты по разным свойствам (ИмяОтправителя и Отправитель), а также использование числового порта и пароля приложения обеспечивают стабильную и безопасную отправку писем из 1С через серверы Gmail.

← На главную