При разработке механизмов рассылки уведомлений или отправки отчетов по электронной почте из 1С программисты часто сталкиваются с ошибкой: «Ошибка при вызове метода контекста (Послать): Указано недопустимое имя почтового ящика (SMTP error code 553 5.7.1 Sender address rejected: not owned by auth user)». Эта проблема особенно актуальна при работе с крупными почтовыми сервисами, такими как Яндекс, Mail.ru или Gmail. Давайте разберем причины возникновения этой ситуации и найдем комплексное решение задачи.
Технически ошибка 553 5.7.1 означает, что почтовый сервер принял ваши учетные данные (логин и пароль), но заблокировал отправку письма, так как адрес, указанный в поле «Отправитель» (From), не совпадает с тем адресом, под которым вы авторизовались в системе. Современные почтовые серверы делают это для борьбы со спамом и подменой обратных адресов. Проанализируем типичный код, который приводит к такой ошибке:
&НаКлиенте
Процедура ПроверитьПочту(Команда)
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
Профиль.ПользовательSMTP = "my_email@yandex.ru";
Профиль.ПарольSMTP = "my_password";
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "Тестовое письмо";
Сообщение.Получатели.Добавить("recipient@mail.ru");
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Сообщить("Письмо отправлено");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
В данном примере мы создаем объект ИнтернетПочтовоеСообщение, но не заполняем свойство Отправитель. В результате 1С формирует заголовок письма с пустым или некорректным полем отправителя, что и вызывает отказ сервера Яндекса.
Первое и самое важное действие — это явно указать адрес отправителя в самом сообщении. Выясним, как это сделать правильно. Мы должны убедиться, что адрес в Сообщение.Отправитель.Адрес в точности совпадает с Профиль.ПользовательSMTP.
// Создаем объект сообщения
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "Проверка связи из 1С";
// Указываем отправителя - ОБЯЗАТЕЛЬНО для Yandex и Mail.ru
Сообщение.Отправитель.Адрес = "my_email@yandex.ru";
Сообщение.Отправитель.ОтображаемоеИмя = "Робот 1С:Бухгалтерия";
// Добавляем получателя
Сообщение.Получатели.Добавить("recipient@mail.ru");
Проанализируем ситуацию: если вы используете корпоративную почту на базе Яндекса, убедитесь, что вы указываете полный адрес (вместе с доменом), а не просто короткий логин.
Рассмотрим современный стандарт безопасности. Почтовые сервисы больше не позволяют использовать ваш основной пароль от почты для доступа через SMTP/IMAP. Если вы вставите обычный пароль в Профиль.ПарольSMTP, вы можете получить ошибку авторизации или ту же 553, так как сервер сочтет подключение небезопасным.
Что нужно сделать в интерфейсе почты:
Профиль.ПарольSMTP.Посмотрим на пример правильного заполнения профиля с учетом всех рекомендаций форума. Некоторые почтовые серверы требуют авторизации не только по SMTP, но и предварительной проверки по POP3/IMAP («POP before SMTP»), хотя для современных серверов Яндекса это редкость, иногда это помогает стабилизировать соединение.
Профиль = Новый ИнтернетПочтовыйПрофиль;
// Настройки отправки (SMTP)
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = "my_email@yandex.ru";
Профиль.ПарольSMTP = "ваш_пароль_приложения";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
// Настройки получения (опционально, но иногда требуется для инициализации сессии)
Профиль.АдресСервераPOP3 = "pop.yandex.ru";
Профиль.ПортPOP3 = 995;
Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.Пользователь = "my_email@yandex.ru";
Профиль.Пароль = "ваш_пароль_приложения";
Профиль.ВремяОжидания = 30;
Выясним причину, по которой даже правильный код может не работать. По умолчанию в новых ящиках Яндекса и Mail.ru доступ по сторонним протоколам отключен. Проанализируем настройки вашего ящика:
Рассмотрим нюансы платформы 1С:Предприятие 8.3. Для порта 465 всегда нужно устанавливать ИспользоватьSSLSMTP = Истина. Однако в некоторых сетях порт 465 блокируется провайдерами или системными администраторами. В таком случае попробуйте альтернативный вариант:
Профиль.ИспользоватьSSLSMTP = Ложь;Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;Этот метод инициализирует защищенное соединение через STARTTLS, что часто помогает избежать проблем с сетевыми экранами.
Соберем все наши знания в единый рабочий алгоритм:
&НаСервере
Процедура ОтправитьПисьмоНаСервере()
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = "info@my-company.ru"; // Ваш логин
Профиль.ПарольSMTP = "abcd-efgh-ijkl-mnop"; // ПАРОЛЬ ПРИЛОЖЕНИЯ
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "Отчет за " + Формат(ТекущаяДата(), "ДЛФ=D");
// КЛЮЧЕВОЙ МОМЕНТ:
Сообщение.Отправитель.Адрес = "info@my-company.ru";
Сообщение.Отправитель.ОтображаемоеИмя = "Информационная система 1С";
Сообщение.Получатели.Добавить("director@my-company.ru");
// Добавление вложения, если файл существует
ПутьКФайлу = "C:\Reports\Report.pdf";
ФайлНаДиске = Новый Файл(ПутьКФайлу);
Если ФайлНаДиске.Существует() Тогда
Сообщение.Вложения.Добавить(ПутьКФайлу, "DailyReport.pdf");
КонецЕсли;
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Почта.Отключиться();
Сообщить("Сообщение успешно отправлено!");
Исключение
ТекстОшибки = ОписаниеОшибки();
// Записываем ошибку в журнал регистрации для анализа
ЗаписьЖурналаРегистрации("ОтправкаПочты", УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
Сообщить("Ошибка при отправке: " + ТекстОшибки);
КонецПопытки;
КонецПроцедуры
Важное замечание: Если ваша база работает в клиент-серверном варианте, крайне рекомендуется выполнять этот код &НаСервере. Это позволит избежать проблем с настройками прав доступа к портам на клиентских машинах и исключит влияние локальных антивирусов, которые могут блокировать почтовый трафик.
Проанализировав все шаги, мы видим, что решение ошибки 553 5.7.1 заключается в строгом соблюдении соответствия авторизованного пользователя и заполненного поля Отправитель, а также в использовании современных методов авторизации через пароли приложений.