При реализации программной рассылки сообщений через почтовые сервисы разработчики 1С нередко сталкиваются с ошибками на этапе вызова метода Послать() объекта ИнтернетПочта. Одной из таких распространенных проблем является ошибка с кодом SMTP error code 555 (сообщение сервера: «MAIL FROM/RCPT TO parameters not recognized or not implemented»). Разберем причины возникновения этой ситуации и приведем готовый работающий алгоритм отправки сообщений через сервер Gmail.
Проанализируем процесс отправки электронного письма по протоколу SMTP. Перед передачей тела сообщения почтовый клиент 1С взаимодействует с сервером с помощью стандартных команд конверта:
MAIL FROM указывает серверу адрес отправителя, на который будут направляться уведомления об ошибках доставки.RCPT TO указывает адрес непосредственного получателя.Если в коде 1С в свойство Отправитель или в список Получатели передана произвольная текстовая строка (например, наименование компании, ФИО сотрудника или адрес с некорректными спецсимволами), почтовый сервер не может распознать структуру команды. Сервер Gmail ожидает строго стандартизированный синтаксис email-адреса. В результате сервер возвращает ошибку 555, сообщая, что переданные параметры не соответствуют стандарту.
Частая ошибка разработчиков заключается в путанице между свойствами Отправитель и ИмяОтправителя объекта ИнтернетПочтовоеСообщение:
Отправитель — должно содержать только чистый email-адрес (например, user@domain.com). Сюда нельзя помещать имена, пробелы, кавычки или скобки формата Иван <ivan@domain.com>.ИмяОтправителя — предназначено именно для отображаемого понятного имени (например, ООО "Ромашка" или Служба поддержки).Разберем по шагам, как правильно инициализировать почтовое сообщение и почтовый профиль для отправки через smtp.gmail.com.
Посмотрим на пример правильного формирования объекта ИнтернетПочтовоеСообщение:
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = "Тестовое уведомление из 1С";
// Обязательно указываем корректный email-адрес отправителя:
Письмо.Отправитель = "myaccount@gmail.com";
// Отображаемое имя человека или организации задаем отдельно:
Письмо.ИмяОтправителя = "Отдел логистики";
// Добавляем получателя (строго валидный email):
Письмо.Получатели.Добавить("recipient@example.com");
// Формируем тело письма
Текст = Письмо.Тексты.Добавить("Здравствуйте! Документ успешно сформирован.");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Рассмотрим подробнее параметры объекта ИнтернетПочтовыйПрофиль. При работе с Gmail важно соблюдать следующие требования:
465. Обратите внимание, что свойство ПортSMTP принимает числовое значение, поэтому указывать порт следует числом (465), а не строкой ("465"). Свойство ИспользоватьSSLSMTP необходимо установить в значение Истина.ПарольSMTP. На платформах начиная с версии 8.3.24 альтернативно доступно свойство ТокенДоступа для авторизации по протоколу OAuth 2.0.Письмо.Отправитель отличается от адреса в Профиль.ПользовательSMTP, сервер либо заменит его на авторизованный ящик, либо заблокирует отправку, если альтернативный адрес не настроен в Gmail как доверенный псевдоним.Объединим настройки и посмотрим на готовый рабочий модуль отправки:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервера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.