При разработке функционала для автоматической рассылки уведомлений из 1С:Предприятие часто возникают ошибки, связанные с настройкой почтовых параметров и передачей данных. Рассмотрим, почему могут возникать ошибки SMTP error code 554, как правильно инициализировать профиль и как избежать проблем при переносе кода из модуля объекта в модуль формы.
Одной из наиболее частых причин ошибки SMTP error code 554 (no valid RCPT address specified) является неверное формирование списка получателей. Сервер принимает соединение, но отклоняет отправку, так как не видит корректного адреса в поле получателя. Также часто встречаются ошибки при попытке подключения, связанные с тем, что объект ИнтернетПочтовыйПрофиль был создан, но его свойства (адрес сервера, порты, логин, пароль) остались пустыми.
При переносе кода из модуля объекта в модуль формы важно помнить, что переменная Объект в форме ссылается на данные формы, а не на сам объект метаданных. Кроме того, методы ИнтернетПочта работают только на сервере, поэтому правильное использование УстановитьПривилегированныйРежим становится ключом к успеху, если у текущего пользователя нет прав на чтение настроек системной учетной записи.
Самый надежный и профессиональный способ отправки сообщений в 1С — использование типовых процедур библиотеки стандартных подсистем (БСП). Это избавляет от необходимости вручную прописывать каждый параметр подключения. Рассмотрим пример реализации:
Процедура СозданиеИОтправкаПисьма(АдресаКоторымОтправляемПисьма)
УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", АдресаКоторымОтправляемПисьма);
ПараметрыПисьма.Вставить("УчетнаяЗапись", УчетнаяЗапись);
ПараметрыПисьма.Вставить("Тема", "Заголовок письма");
ПараметрыПисьма.Вставить("Тело", "Текст сообщения");
ПараметрыПисьма.Вставить("ТипТекста", Перечисления.ТипыТекстовЭлектронныхПисем.HTML);
Попытка
РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма);
Исключение
Сообщить("Не удалось отправить письмо: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Использование РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение является предпочтительным, так как эта функция берет на себя всю работу по авторизации и установке соединения, используя настройки из справочника УчетныеЗаписиЭлектроннойПочты.
Если по какой-то причине использование типовых функций невозможно, необходимо выполнить инициализацию профиля вручную. Помните, что команда Новый ИнтернетПочтовыйПрофиль создает пустой объект, который требует обязательного заполнения следующих свойств:
АдресСервераSMTP — адрес вашего почтового сервера.ПортSMTP — обычно это 25, 465 или 587.Пользователь — логин учетной записи.Пароль — пароль учетной записи.ИспользоватьSSLSMTP — булево значение, необходимое для современных почтовых серверов.Рассмотрим пример ручного заполнения:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465;
Профиль.Пользователь = "user@mail.ru";
Профиль.Пароль = "password";
Профиль.ИспользоватьSSLSMTP = Истина;
ИнтернетПочта = Новый ИнтернетПочта;
Попытка
ИнтернетПочта.Подключиться(Профиль);
// ... дальнейшая логика отправки
ИнтернетПочта.Отключиться();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Для того чтобы ваша разработка работала стабильно, придерживайтесь следующих правил:
АдресаКоторымОтправляемПисьма. Ошибка 554 часто возникает из-за лишних пробелов или пустой строки в этом параметре.&НаСервере и вызывайте её с привилегированным режимом, так как рядовому пользователю может быть запрещено чтение учетных записей почты.Следуя этим рекомендациям, вы сможете успешно реализовать механизм отправки писем в любой конфигурации 1С, избежав при этом типичных ошибок настройки и проблем с контекстом исполнения кода.