Добрый день! Из 1С:Предприятие 8.2.17.169 перестала отправляться почта.
Использую стандартный код.
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = POP3Сервер;
Профиль.АдресСервераSMTP = SMTPСервер;
Если ВремяОжиданияСервера > 0 Тогда
Профиль.ВремяОжидания = ВремяОжиданияСервера;
КонецЕсли;
Профиль.Пароль = Пароль;
Профиль.Пользователь = Логин;
Профиль.ПортPOP3 = ПортPOP3;
Профиль.ПортSMTP = ПортSMTP;
Если ТребуетсяSMTPАутентификация Тогда
Профиль.ПарольSMTP = ПарольSMTP;
Профиль.ПользовательSMTP = ЛогинSMTP;
Иначе
Профиль.ПарольSMTP = Пароль;
Профиль.ПользовательSMTP = Логин;
КонецЕсли;
ИнтернетПочта = Новый ИнтернетПочта;
Попытка
ИнтернетПочта.Подключиться(Профиль);
Исключение
СообщитьОбОшибке(ОписаниеОшибки());
Проверка = ПроверитьЗаполнениеОбязательныхПолей();
Если НЕ ЗначениеНеЗаполнено(Проверка) Тогда
СообщитьОбОшибке(«» + Проверка);
КонецЕсли;
Предупреждение(«Произошли ошибки при проверке настроек учетной записи.
|Описание ошибки приведено в окне сообщения.»);
Возврат;
КонецПопытки;
Предупреждение(«Проверка подключения к почтовому серверу с заданными параметрами выполнена успешно.»);
1С стала выдавать ошибку:
Ошибка при вызове метода контекста (Подключиться): Время ожидания операции чтения истекло.
Раньше все отправлялось отлично. Есть подозрение, что могло накатиться какое-то обновление на почтовый сервер, и 1С перестала удовлетворять новым политикам.
Пробовал менять способ SMTP-аутентификацией, типа:
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
В этом случае 1С выдает ошибку:
Ошибка при вызове метода контекста (Подключиться): Параметр команды не реализован (SMTP error code 504, 5.7.4 Unrecognized authentication type)
В чем может быть дело?
Применений этому механизму можно найти достаточно много, например:
- Отправка документов (договоров, счетов, актов и пр.) непосредственно из 1С на email клиента
- Рассылка отчетов из 1С по расписанию на почту руководителям подразделений
- Обмен данными 1С с разными системами
- Отправка заказов поставщику из 1С при дефиците определенных товаров
- и т.д.
Поскольку работа с почтой из 1С используется в важных бизнес-процессах компании, то необходимо обеспечить стабильную работу этого механизма: письма должны отправляться и приниматься стабильно и без ошибок.
На практике часто возникают ситуации, когда в какой-то момент (обычно в самый неподходящий :)) отправка писем из 1С или прием писем в 1С перестает работать.
В результате последствия могут самыми разными:
- Клиент не получит вовремя счет на оплату — компания не получит деньги вовремя
Руководитель не получит ежедневный отчет о продажах из 1С — не сможет принять правильные решения (в отдельных случаях может уволить ответственного за рассылку:))
Обмен данными в 1С не выполнится вовремя, в результате чего объем данных, который нужно будет выгрузить при следующем обмене будет увеличиваться, что может привести к проблемам производительности и блокировкам при следующем обмене
В этой статье мы поговорим о том, на что нужно обратить внимание в первую очередь, если отправка/получение email из/в 1С перестал(а) работать. При этом в статье приведены лишь некоторые из возможных ошибок, причина которых неочевидна. В дальнейшем статья будет дополняться другими ошибками, чтобы вы смогли использовать её как инструкцию по решению проблем с отправкой (получением) почты из (в) 1С.
Будем рассматривать типовой механизм отправки электронной почты из 1С: т.е. со стороны 1С идет подключение к pop3 или smtp-серверу одного из почтовых сервисов: yandex, google, mail.ru и пр.
Ошибка № 1. Аутентификация не прошла (SMTP error code 535 5.7.8 Username and Password not accepted)
Скриншот ошибки, которую вы можете встретить в 1С:Возможные причины:
- Неверно указан логин/пароль
Часто бывает так что на стороне аккаунта в yandex/google изменили пароль, а в 1С применить изменения забылиЧто делать:
проверить учетные данные (логин/пароль), под которыми выполняется подключение из 1С к smtp-серверу и обновить их.
В настройках безопасности аккаунта закрыт доступ для «ненадежных» приложений
Если вы используете для работы с почтой аккаунт в почтовом сервисе google, то на уровне настроек аккаунта может быть закрыт доступ к аккаунту для «ненадежных» по мнению google приложений. К таким приложениям, к сожалению, google может отнести 1С 🙂
Что делать:
Заходим в настройки безопасности аккаунта google: https://myaccount.google.com/security Открываем доступ к аккаунту для ненадежных приложений:
Ошибка № 2. Сервис отключен с разрывом канала (SMTP error code 421 SMTP connection broken (reply))
Скриншот ошибки, которую вы можете встретить в 1С:Возможная причина:IP-адрес сервера, с которого идет отправка сообщений (как правило — сервер 1С) попал в спам-базу.
Это означает, что почтовый сервис расценил письма, которые вы отправляете из 1С, как СПАМ, и они не будут доставлены получателю. Такая ситуация может возникнуть, если вы выполняете массовые email-рассылки из 1С большому количеству клиентов.
Что делать:
Шаг 1. Проверить наличие IP-адреса вашего сервера в СПАМ базах.
Один из удобных способов — воспользоваться сайтом 2ip: https://2ip.ru/spam/. Необходимо ввести IP-адрес и нажать на кнопку «Проверить». На выходе получите примерно такую таблицу:Если во второй колонке увидели «LISTED», значит IP-адрес находится в СПАМ-базе.
Шаг 2. Вывести IP из спам базы
В зависимости от того в какой из спам листов попал ваш IP действия будут немного отличаться, но принцип один и тот же — нужно найти сайт этого спам-листа и отправить апелляцию. Рассмотрим, например, как вывести IP из спам листа BARRACUDA.
Заходим на сайт BARRACUDA, форма для отправки апелляции находится тут:
http://www.barracudacentral.org/rbl/removal-requestУказываем в этой форме:
- Email Server IP Address — IP-адрес, который угодил в спам лист
- Email Address — личная почта. На эту почту придет ответ от Barracuda
- Phone Number — номер телефона для связи (звонить вряд ли будут, но указать нужно)
- Reason for Removal — тут надо написать (на английском) почему указанный IP-адрес должен быть удален из спам листа. Можно воспользоваться переводчиком и сформировать, например, такое оправдание: «Сотрудник не правильно пользовался сервером. Он наказан. Ситуацию исправили. Удалите, пожалуйста IP из спам листа»
После этого нажимаем «Submit request» и ждем ответа. На указанный в форме email должно прийти уведомление, которое начинается примерно с таких слов:Через несколько часов IP-адрес будет удален из спам-листа. Чтобы проверить это снова заходим на 2ip и проверяем (см. Шаг 1).
Шаг 3. Проверить отправку почты из 1С
Если сделали все правильно — отправка должна выполняться без ошибок.
Таким образом, в этой статье, мы рассмотрели некоторые ошибки, связанные с отправкой (получением) email из/в 1С, возможные причины и как устранить эти ошибки.
Если вам помогла эта статья, напишите об этом в комментариях. Также если вам не удалось решить ошибки, связанные с отправкой почты из 1С, опишите в комментариях проблему и текст ошибки. В этом случае мы постараемся вам помочь. К тому же это будет полезно другим и мы сможем дополнить текущую статью.
Перейти к содержимому
Настройка 1С
Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.
При отправке почтового сообщения из 1С появляется ошибка: «Аутентификация не прошла (SMTP error code 535 5.7.0 NEOBHODIM parol prilozheniya <ссылка> Application password is REQUIRED)».
В частном случае клиент использует почтовый аккаунт на Mail Ru. Программа 1С сообщает, что ей необходим пароль приложения.
Что требуется
В целях безопасности необходимо использовать функцию «пароли внешних приложений». Отдельный пароль из 16-ти символов, а не основной — от учетной записи.
- Действия в почтовом профиле
Cоздайте пароль приложения.
Чтобы создать пароль для внешнего приложения:
• Перейдите в настройки Mail ID → «Безопасность» → «Пароли для внешних приложений».
• Нажмите кнопку «Добавить».
• Введите название приложения, чтобы не забыть, для какой программы пароль.
• Скопируйте код.
Как итог: получаем отдельный пароль для нашего приложения (1С).
- Действия в 1С
Откройте программу, войдите в раздел «Администрирование — Органайзер — Настройка системной учетной записи / Учетные записи электронной почты».
В окне «Настройка почты» проверьте ваш почтовый адрес и введите ранее полученный пароль приложения из п. 1.
✅ Запустите проверку новых настроек — 1С должна авторизоваться в почтовом сервисе по SMTP. Это значит, вы все настроили правильно, а 1С теперь может отправлять письма.
__________
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь → +7-911-500-10-11
Время прочтения ~ 2 минуты
Если при отправке документа контрагенту по почте из программы 1С у вас появляется сообщение с ошибкой «SMTP error code 535», это означает, что попытка аутентификации на сервере вашего почтового клиента завершилась неудачно.
Для получения более точного описания проблемы стоит зайти в настройки учетной записи, с которой вы пытаетесь отправить письмо.
В карточке учетной записи нужно проверить правильность введенных данных, а именно логина и пароля от вашей почты. После повторного ввода данных необходимо нажать на «Проверка настройки» и убедиться, что ошибка не повторяется.
Оставьте заявку
Если ошибка осталась и при этом используется почтовый сервер @mail.ru, значит вы вводите не тот пароль от почты.
С недавних пор Mail для авторизации сторонних приложений у себя на сервере генерирует отдельные пароли, которые и необходимо указывать в настройках 1С.
Для получения пароля, вам необходимо зайти на свою почту и выбрать пункт «Настройки».
Далее выбираете «Все настройки».
После «Безопасность».
В разделе «Безопасность» выбираете «Пароли для внешних приложений».
Добавляете новую запись.
Даете название новой записи, например, «1С».
Вводите свой пароль от почты.
Полученный пароль сохраняете и возвращаетесь к настройкам учетной записи в 1С.
После ввода нового пароля, повторяете проверку настроек и получаете сообщение о том, что все настройки выполнены правильно.
Консультация 1С
У разработчиков на платформе 1С иногда возникает задача по взаимодействию системы 1С: Предприятие с различными почтовыми программами и протоколами. 1С Предприятие 8.0 имеет довольно удобные средства для отправки сообщений, импорта писем из почтового клиента в справочник или другой объект конфигурации, работы с MAPI, SMTP или POP3.
При работе с почтой разделяют два способа доступа к почтовому ящику, почтовому клиенту:
объект «Почта» и объект «Интернет почта», каждый из объектов имеет свои достоинства.
Почта — предоставляет доступ к почте через встроенный почтовый клиент, работает по технологии MAPI.
Интернет почта — объект открывает возможности по доступу непосредственно к почтовым ящикам и учетным записям находящимися на почтовом сервере, использование и работа данного объекта не зависит от установленных в системе почтовых клиентов, даже если почтовый клиент установлен в системе «ИнтернетПочта» будет работать параллельно с ним, объект использует интернет-протоколы SMTP, POP3.
1.Получение сообщений объектом «Почта».
Для работы с объектом Почта необходимо наличие установленного на компьютере почтового клиента с описанными учетными записями.
Для подключения к почтовому клиенту у объекта есть метод «Подключиться».
Код 1C v 8.х
Почта = Новый Почта;
Почта.Подключиться(,);
Первый параметр — имя профиля, к примеру, если в системе установлен MS Outlook, то как правило его профиль называется Outlook. Следовательно при подключении строка выглядела бы так:
Код 1C v 8.х
Почта.Подключиться("Outlook");
Второй параметр отвечает за пароль к учетной записи.
Далее необходимо произвести выбор необходимых нам писем, для этой цели объект Почта имеет метод «Выбрать». У метода два параметра, первый отвечает за выбор непрочитанных писем — Истина (при Ложь будут выбраны все письма, находящиеся в папке «Входящие» почтового клиента), второй отвечает за выборку вложений, при Ложь, вложения выбираются.
//Выбираем все письма, со всеми вложениями.
Код 1C v 8.х
Сообщения = Почта.Выбрать(Ложь,Ложь);
(иногда при взаимодействии с Outlook 2003 возникает проблема, при которой 1С 8 просто аварийно завершает работу с ошибкой, именно на данной строке кода, это лечится установкой пакета обновления SP2 для MS Office 2003).
Далее после выборки сообщений необходимо перебрать их в цикле и сохранить, на форме необходимо добавить ТабличноеПоле1 куда будут сохраняться входящие письма.
Код 1C v 8.х
Для каждого Сообщение Из Сообщения Цикл
//Добавляем строку в табличную часть
СтрокаТП = ТабличноеПоле1.Добавить();
// Перебираем коллекцию получателей сообщения
Для каждого Получатель Из Письмо.Получатели Цикл
Получатели = Получатели + Получатель.Пользователь + " <" + Получатель.Адрес + "> ";
КонецЦикла;
СтрокаТП.Кому = Получатели;
Попытка
СтрокаТП.ОтКого= Сообщение.Отправитель.Адрес;
Исключение
СтрокаТП.ОтКого= Сообщение.Отправитель;
КонецПопытки;
СтрокаТП.Тема = Сообщение.Тема;
СтрокаТП.Текст = Сообщение.Текст;
СтрокаТП.Дата = Сообщение.ДатаПолучения;
// Перебираем вложения письма
Для каждого Вложение Из Сообщение.Вложения Цикл
Вложение.Данные.Записать(Вложение.Наименование);
//Запоминаем имена вложение прикрепленных к данному письму, и сохраним в ТабличноеПоле1
Влож=Влож+Вложение.Наименование+",";
КонецЦикла;
СтрокаТП.ПутьВложения=Влож;
КонецЦикла;
//отключение
Почта.Отключиться();
Все реквизиты входящих писем сохраняются в соответствующие поля табличного поля, вложения сохраняются в каталог временных файлов, а имена вложений в реквизит табличного поля. Для более удобного хранения вложений писем, 1С 8 имеет тип «Хранилище значения», который позволяет хранить двоичные данные, далее при получении сообщений объектом ИнтернетПочта рассмотрим возможность хранения в «Хранилище значения».
2.Отправка сообщений объектом «Почта»
При отправке сообщения, подключение к почтовому клиенту производится точно так же, как и при получении, перед отправкой необходимо подготовить письмо.
Код 1C v 8.х
Сообщение = Новый ПочтовоеСообщение;
Сообщение.Текст = "текст сообщения";
Сообщение.Отправитель = "petya@pupkin.com";
Сообщение.Тема ="Тема сообщения";
Сообщение.Получатели.Добавить("vasya@pupkin.com");
Сообщение.Вложения.Добавить(Новый ДвоичныеДанные("C:\file.jpg"),"file.jpg");
Почта = Новый Почта;
//подключаемся без параметров, к клиенту установленному по умолчанию в системе
Почта.Подключиться(,);
Попытка
//Пытаемся послать письмо
Почта.Послать(Сообщение,Истина);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
//отключение
Почта.Отключиться();
В методе Почта.Послать(Сообщение,Истина) два параметра, первый принимает ссылку на почтовое сообщение, второй параметр определяет, требуется ли запрос на подтверждение о получении письма адресатом (Истина — запрос включен). После этих операций письмо попадает в папку «Исходящие» почтового клиента, и в зависимости от настроек клиента отправляется сразу или по команде пользователя.
В MS Outlook встроена защита от несанкционированного доступа к адресной книге и базе почтовых сообщений, и защита от несанкционированной отправки электронных писем через службы Outlook. В Outlook 2003 система безопасности срабатывает не только при попытке получить адрес отправителя письма, но даже при попытке получить его текст. В действительности защита выражается в показываемом пользователю окне системы безопасности при обращении к некоторым объектам и свойствам объектов Outlook и предлагает открыть доступ на определенное время, следует разрешить доступ.
3.Получение сообщений объектом «ИнтернетПочта».
Перед подключением к почтовому серверу, для объекта ИнтернетПочта необходимо заполнить данные Профиля учетной записи, и затем передать эти данные в метод «Подключиться».
Код 1C v 8.х
Функция ПолучитьПрофиль()
Профиль = Новый ИнтернетПочтовыйПрофиль;
// SMTP сервер
Профиль.АдресСервераSMTP = "smtp.pupkin.com";
// Порт SMTP сервера
Профиль.ПортSMTP = 25;
// POP3 сервер
Профиль.АдресСервераPOP3 = "pop.pupkin.com";
// Порт POP3 сервера
Профиль.ПортPOP3 = 110;
// Пароль к почтовому ящику
Профиль.Пароль = "pass";
// Пароль пользователя для SMTP сервера
Профиль.ПарольSMTP = "pass";
// Логин пользователя
Профиль.Пользователь = "vasya";
// Логин пользователя для SMTP сервера
Профиль.ПользовательSMTP = "vasya";
// Время ожидания выполнения операции в секундах
Профиль.ВремяОжидания = 50;
Возврат Профиль;
КонецФункции
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ПолучитьПрофиль());
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Заголовки=Почта.ПолучитьЗаголовки()
Если Заголовки.Количество()=0 Тогда
Предупреждение("В почтовом ящике нет входящих сообщений!", ,"Нет сообщений");
КонецЕсли;
// Загрузка сообщений в массив
Сообщения = Почта.Выбрать(Истина,Заголовки);
Для каждого Сообщение Из Сообщения Цикл
СтрокаТП = ТабличноеПолеИнтернетПочта.Добавить();
СтрокаТП.Дата = Сообщение.ДатаОтправления;
СтрокаТП.ОтКого = Сообщение.Отправитель.Пользователь + " <" + Сообщение.Отправитель.Адрес + "> ";
СтрокаТП.Тема = Сообщение.Тема;
// Перебираем получателей сообщения
Для каждого Получатель Из Сообщение.Получатели Цикл
КомуВходящие = КомуВходящие + Получатель.Пользователь + " <" + Получатель.Адрес + "> ";
КонецЦикла;
СтрокаТП.Кому = КомуВходящие;
// Перебираем тексты сообщения
Для каждого ТекстСообщения Из Сообщение.Тексты Цикл
ТекстВходящие = ТекстВходящие + ТекстСообщения.Текст;
КонецЦикла;
СтрокаТП.Текст = ТекстВходящие;
// Перебираем вложения письма
Для каждого Вложение Из Сообщение.Вложения Цикл
Вложение.Данные.Записать(Вложение.Name);
СправочникВложения.РеквизитВложение = новый ХранилищеЗначения(Новый ДвоичныеДанные(Вложение.Name));
СправочникВложения.ИмяВложения=Вложение.Name;
КонецЦикла;
КонецЦикла;
// отключение
Почта.Отключиться();
Метод Почта.Выбрать(Истина,Заголовки); имеет два параметра, первый отвечает за удаление писем с сервера (при Истина-удалять), второй параметр отвечает за массив сообщений для выборки (т.е. закачки на компьютер клиента с сервера), если параметр пуст, то выбираются все сообщения находящиеся на сервере.
При переборе вложений, данные полученные из письма сохраняются в реквизит типа ХранилищеЗначения, заранее созданного справочника «СправочникВложения» в конфигураторе, т.к. данные первоначально сохраняются на диск, а затем загружаются в справочник, то, после загрузки в соответствующий реквизит справочника данные можно удалить. Не рекомендуется хранить данные типа ХранилищеЗначения в Табличных частях справочников, т.к. при больших объемах данных это затормаживает работу конфигурации.
4.Отправка сообщений объектом «ИнтернетПочта».
При отправке сообщения используется Функция ПолучитьПрофиль().
Код 1C v 8.х
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ПолучитьПрофиль());
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Вложения.Добавить(Новый ДвоичныеДанные("C:\file.jpg"),"file.jpg");
Сообщение.Отправитель = "vasya@pupkin.com";
Сообщение.ИмяОтправителя = "Вася";
ПочтовыеАдреса = Сообщение.Получатели;
ПочтовыйАдрес = ПочтовыеАдреса.Добавить();
ПочтовыйАдрес.Адрес = "petya@pupkin.com";
Сообщение.Тема ="Тема сообщения";
ИнтернетТекстПочтовогоСообщения = Сообщение.Тексты.Добавить();
ИнтернетТекстПочтовогоСообщения.Текст = "Текст сообщения";
ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Попытка
// Пытаемся послать письмо
Почта.Послать(Сообщение);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
// отключение
Почта.Отключиться();
Удобно подключить автополучение/автоотправку почты командой «ПодключитьОбработчикОжидания(,)». Первый параметр в команде отвечает за наименование вызываемой процедуры, и второй, период ожидания процедуры в секундах, обычно обработчик ожидания вставляется в глобальный модуль системы (например, в процедуру ПриНачалеРаботыСистемы()) и указывает на процедуру с пометкой Экспорт.
Например, можно создать процедуру ПроверитьПочту, в которую вставить загрузку писем из почтового ящика и вставить ее в следующую строку:
ПодключитьОбработчикОжидания(«ПроверитьПочту»,60)
Также для обработки и просмотра сообщений в формате HTML удобно пользоваться компонентом «Поле HTML документа», для загрузки HTML текста в компонент используется метод ПолеHTMLдокумента.УстановитьТекст(Html), где Html-это документа полученный из текста сообщения. Есть вариант загрузки HTML с диска (если это вложение), ПолеHTMLдокумента.Перейти(«file:\\C:\File.html»).
После использования нескольких или сразу всех способов работы с электронной почтой, образуется полноценный почтовый клиент с возможностью хранения и обработки писем с вложениями на базе 1С предприятие 8.0.
Автор: Alimov Roman
Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя?