Долго отправляется почтовое сообщение из 1С
Может кто сталкивался..
На мой взгляд очень долго отправляется письмо из 1С - около 20 секунд выполняется метод "Послать()" объекта "ИнтернетПочта".
Тестовое письмо содержит всего лишь одного адресата и текст "тест", т.е. на объем письма грешить не надо.
Используется свой внутренний почтовый сервер MS Exchange, отправка на внутренний же адрес.
Вряд ли это важно, но используется конфа УТ 11.1.3.
А вот платформа вроде как влияет.
Перешли на 8.3.10.2561 и начали жаловаться пользователи.
Изначально использовали 8.3.5.1146 (но замеры делал уже после перехода), при отправке с этой версии платформы отправка около 10 секунд (что на мой взгляд тоже слишком долго)
Поставил рядом 8.3.12.1567 - те же 20 секунд.
Все проверялось на одном виртуальном сервере. Получается что-то в платформе.. может какие доп. настройки нужно использовать?
Админы ковыряли настройки MS Exchange (коннекторы смотрели, настройки профиля, с которого почта отправляется) - из результатов только замедление отправки до 38секунд. Как я понял по логам MS Exchange задержек не видно и все время "сидит" между 1С и MS Exchange.
Может подскажете как это ускорить?
А так же было бы интересно узнать сколько времени у вас занимает метод "Послать()" (без хамства :)) и с каким почтовым сервером.
На мой взгляд очень долго отправляется письмо из 1С - около 20 секунд выполняется метод "Послать()" объекта "ИнтернетПочта".
Тестовое письмо содержит всего лишь одного адресата и текст "тест", т.е. на объем письма грешить не надо.
Используется свой внутренний почтовый сервер MS Exchange, отправка на внутренний же адрес.
Вряд ли это важно, но используется конфа УТ 11.1.3.
А вот платформа вроде как влияет.
Перешли на 8.3.10.2561 и начали жаловаться пользователи.
Изначально использовали 8.3.5.1146 (но замеры делал уже после перехода), при отправке с этой версии платформы отправка около 10 секунд (что на мой взгляд тоже слишком долго)
Поставил рядом 8.3.12.1567 - те же 20 секунд.
Все проверялось на одном виртуальном сервере. Получается что-то в платформе.. может какие доп. настройки нужно использовать?
Админы ковыряли настройки MS Exchange (коннекторы смотрели, настройки профиля, с которого почта отправляется) - из результатов только замедление отправки до 38секунд. Как я понял по логам MS Exchange задержек не видно и все время "сидит" между 1С и MS Exchange.
Может подскажете как это ускорить?
А так же было бы интересно узнать сколько времени у вас занимает метод "Послать()" (без хамства :)) и с каким почтовым сервером.
По теме из базы знаний
Найденные решения
(33) да.
1. сделали отдельный коннектор для отправки из 1С (у нас управляемые формы, клиент-сервер и вся отправка от 1С идет с сервера 1С) - указали ip сервера 1С, на нем убрали ожидание подтверждение о доставке и задержку для защиты от спама (MaxAcknowledgementDelay = 0, TarpitInterval = 0)
2. сервер 1С и сервер exchange в облаке, но скорее всего не в этом дело, а в том, что 1С отправляет как неавторизованный пользователь для exchange, поэтому толи срабатывала антиспам защита, толи авторизация из-за этого долго происходила. В конфигурации сервера exchange для транспортного сервера в список разрешенных адресов добавили ip сервера 1С и наконец-то теперь отправка меньше секунды.
1-е было сделано давно и не помогало, а вот 2-е на днях нарыли и сразу заработало как надо.
1. сделали отдельный коннектор для отправки из 1С (у нас управляемые формы, клиент-сервер и вся отправка от 1С идет с сервера 1С) - указали ip сервера 1С, на нем убрали ожидание подтверждение о доставке и задержку для защиты от спама (MaxAcknowledgementDelay = 0, TarpitInterval = 0)
2. сервер 1С и сервер exchange в облаке, но скорее всего не в этом дело, а в том, что 1С отправляет как неавторизованный пользователь для exchange, поэтому толи срабатывала антиспам защита, толи авторизация из-за этого долго происходила. В конфигурации сервера exchange для транспортного сервера в список разрешенных адресов добавили ip сервера 1С и наконец-то теперь отправка меньше секунды.
1-е было сделано давно и не помогало, а вот 2-е на днях нарыли и сразу заработало как надо.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
делал массовую рассылку актов сверки - 1-3 секунды на письмо, отправитель yandex
думаю дело в Вашем почтовом сервере, если не затруднит, покажите настройки подключения для учетной записи с которой идет отправка
сколько времени у вас занимает метод "Послать()"
делал массовую рассылку актов сверки - 1-3 секунды на письмо, отправитель yandex
думаю дело в Вашем почтовом сервере, если не затруднит, покажите настройки подключения для учетной записи с которой идет отправка
(2) - прикрепил настройки почтового профиля из 1С.
(4) ,(6) - отправка идет с помощью функций общих модулей БСП, сам код формирования письма мне не нужен.
(3) - ок, спасибо, попробую явно указывать свойство ИспользоватьSSLSMTP
(5) - так не хотелось бы.. оставим на самый крайний случай
(4) ,(6) - отправка идет с помощью функций общих модулей БСП, сам код формирования письма мне не нужен.
(3) - ок, спасибо, попробую явно указывать свойство ИспользоватьSSLSMTP
(5) - так не хотелось бы.. оставим на самый крайний случай
Прикрепленные файлы:
(1)Попробуйте так
Письмо = Новый ПочтовоеСообщение;
Письмо.текст = "ТестовоеПисьмо"
Письмо.Отправитель = "ВашОтправитель";
Письмо.Получатель = "ВашПолучатель";
Профиль = НовыйИнтернетПочтовыйПрофиль(УчетнаяЗапись);
Соединение = Новый ИнтернетПочта;
Соединение.Подключиться(Профиль); // в этом месте нужно смотреть отладчиком
Соединение.Послать(Письмо); // в этом месте нужно смотреть отладчиком
Функция НовыйИнтернетПочтовыйПрофиль(УчетнаяЗапись)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| УчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты КАК АдресСервераIMAP,
| УчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты КАК ПортIMAP,
| УчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляВходящейПочты КАК ИспользоватьSSLIMAP,
| УчетныеЗаписиЭлектроннойПочты.Пользователь КАК ПользовательIMAP,
| УчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверВходящейПочты КАК ТолькоЗащищеннаяАутентификацияIMAP,
| УчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты КАК АдресСервераSMTP,
| УчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты КАК ПортSMTP,
| УчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты КАК ИспользоватьSSLSMTP,
| УчетныеЗаписиЭлектроннойПочты.ПользовательSMTP КАК ПользовательSMTP,
| УчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверИсходящейПочты КАК ТолькоЗащищеннаяАутентификацияSMTP,
| УчетныеЗаписиЭлектроннойПочты.ВремяОжидания КАК Таймаут
|ИЗ
| Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
|ГДЕ
| УчетныеЗаписиЭлектроннойПочты.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", УчетнаяЗапись);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат Неопределено;
КонецЕсли;
Результат = Новый ИнтернетПочтовыйПрофиль;
ЗаполнитьЗначенияСвойств(Результат, Выборка);
УстановитьПривилегированныйРежим(Истина);
Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(УчетнаяЗапись, "Пароль,ПарольSMTP");
УстановитьПривилегированныйРежим(Ложь);
Результат.ПарольIMAP = Пароли.Пароль;
Результат.ПарольSMTP = Пароли.ПарольSMTP;
Возврат Результат;
КонецФункции
Показать
(33) да.
1. сделали отдельный коннектор для отправки из 1С (у нас управляемые формы, клиент-сервер и вся отправка от 1С идет с сервера 1С) - указали ip сервера 1С, на нем убрали ожидание подтверждение о доставке и задержку для защиты от спама (MaxAcknowledgementDelay = 0, TarpitInterval = 0)
2. сервер 1С и сервер exchange в облаке, но скорее всего не в этом дело, а в том, что 1С отправляет как неавторизованный пользователь для exchange, поэтому толи срабатывала антиспам защита, толи авторизация из-за этого долго происходила. В конфигурации сервера exchange для транспортного сервера в список разрешенных адресов добавили ip сервера 1С и наконец-то теперь отправка меньше секунды.
1-е было сделано давно и не помогало, а вот 2-е на днях нарыли и сразу заработало как надо.
1. сделали отдельный коннектор для отправки из 1С (у нас управляемые формы, клиент-сервер и вся отправка от 1С идет с сервера 1С) - указали ip сервера 1С, на нем убрали ожидание подтверждение о доставке и задержку для защиты от спама (MaxAcknowledgementDelay = 0, TarpitInterval = 0)
2. сервер 1С и сервер exchange в облаке, но скорее всего не в этом дело, а в том, что 1С отправляет как неавторизованный пользователь для exchange, поэтому толи срабатывала антиспам защита, толи авторизация из-за этого долго происходила. В конфигурации сервера exchange для транспортного сервера в список разрешенных адресов добавили ip сервера 1С и наконец-то теперь отправка меньше секунды.
1-е было сделано давно и не помогало, а вот 2-е на днях нарыли и сразу заработало как надо.
(1) Исправляли следующим образом:
1) Игрались с шифрованием. Не помогло.
2) Пользователей отправки меняли. Не помогло.
3) Серверы выходили по разному в инет, перенастраивали. Не помогло.
4) Программы отправки меняли. Не помогло.
5) Позвонили в компанию, обеспечивающую почтовый сервис. Они сказали, что на их стороне пакеты не принимает файрвол подолгу, В пакете заголовка почты, было какое-то дополнение, которое мешало отправке и было подозрительным для файрвола.
Вот такие чудеса!
1) Игрались с шифрованием. Не помогло.
2) Пользователей отправки меняли. Не помогло.
3) Серверы выходили по разному в инет, перенастраивали. Не помогло.
4) Программы отправки меняли. Не помогло.
5) Позвонили в компанию, обеспечивающую почтовый сервис. Они сказали, что на их стороне пакеты не принимает файрвол подолгу, В пакете заголовка почты, было какое-то дополнение, которое мешало отправке и было подозрительным для файрвола.
Вот такие чудеса!
полная поддержка шифрования появилась в 8.3.9
возможно на вашей новой платформе надо явно выключать шифрование протоколов письма, если оно не использовалось ранее.
возможно на вашей новой платформе надо явно выключать шифрование протоколов письма, если оно не использовалось ранее.
(11) да, интерфейс висит, поэтому и пожаловались, когда делают рассылку по 25 писем )
Да думал уже об этом, но просто ведь работали уже пару лет и было приемлемо (субъективно по памяти говорят, что эти же 25 писем отправлялись 2-3 минуты, а теперь 12 минут).
Пока еще попробую повыяснять и админов понапрягать, потом уже можно если никак, то фоново отправлять. Спасибо.
Да думал уже об этом, но просто ведь работали уже пару лет и было приемлемо (субъективно по памяти говорят, что эти же 25 писем отправлялись 2-3 минуты, а теперь 12 минут).
Пока еще попробую повыяснять и админов понапрягать, потом уже можно если никак, то фоново отправлять. Спасибо.
Функция ОтправитьНаЭлектроннуюПочту(Получатели, Тема, Текст, ДополнительныеПараметры = Неопределено, ИмяОтправителя = "1с-Зарплата и Управление Персоналом") Экспорт
Если ДополнительныеПараметры = Неопределено Тогда
ДополнительныеПараметры = Новый Структура;
КонецЕсли;
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
Профиль.АдресСервераSMTP = "адрес";
Профиль.ПортSMTP = 25;
Профиль.Пользователь = "Пользователь";
Профиль.ПользовательSMTP = "Пользователь";
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
ПочтовоеСообщение.Тема = Тема;
ПочтовоеСообщение.Отправитель.Адрес = "Пользователь";
ПочтовоеСообщение.Отправитель.ОтображаемоеИмя = ИмяОтправителя;
ПочтовоеСообщение.ИмяОтправителя = ИмяОтправителя;
ПолучателиТип = ТипЗнч(Получатели);
Если ТипЗнч(Получатели) = Тип("Массив") Тогда
Для Каждого Адрес Из Получатели Цикл
ПочтовоеСообщение.Получатели.Добавить(СокрЛП(Адрес));
КонецЦикла;
ИначеЕсли ПолучателиТип = Тип("Строка") Тогда
ПочтовоеСообщение.Получатели.Добавить(СокрЛП(Получатели));
Иначе
Возврат Ложь;
КонецЕсли;
//
//
Если ДополнительныеПараметры.Свойство("Вложения") Тогда
НомерФайла = 1;
Для Каждого Файл из ДополнительныеПараметры.Вложения Цикл
Если ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
ПочтовоеСообщение.Вложения.Добавить(Файл, УниверсальныеМеханизмы.ПолучитьИмяФайлаИзПолногоПути(Файл)); //Файл, Наименование
ИначеЕсли ТипЗнч(Файл) = Тип("Строка") Тогда
ПочтовоеСообщение.Вложения.Добавить(Новый ДвоичныеДанные(Файл), УниверсальныеМеханизмы.ПолучитьИмяФайлаИзПолногоПути(Файл)); //Файл, Наименование
Иначе
Вложение = ПочтовоеСообщение.Вложения.Добавить(Файл.ДвоичныеДанные, ?(Файл.Свойство("НаименованиеВложения"), Файл.НаименованиеВложения, Неопределено));
Файл.Свойство("CID" , Вложение.Идентификатор);
Файл.Свойство("ТипСодержимого", Вложение.ТипСодержимого);
КонецЕсли;
НомерФайла = НомерФайла + 1;
КонецЦикла;
КонецЕсли;
ПочтовоеСообщение.Тексты.Добавить(Текст, ?(Найти(Текст, "html") > 0, ТипТекстаПочтовогоСообщения.HTML, ТипТекстаПочтовогоСообщения.ПростойТекст));
ПочтовоеСообщение.ОбработатьТексты();
Попытка
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(ПочтовоеСообщение);
Почта.Отключиться();
Возврат Истина;
Исключение
Комментарий = "Ошибка при отправке сообщения на электронную почту:" + Символы.ПС + ОписаниеОшибки();
ЗаписьЖурналаРегистрации("Ошибка выполнения", УровеньЖурналаРегистрации.Ошибка, , , Комментарий);
ОбщегоНазначения.СообщитьОбОшибке(Комментарий);
КонецПопытки;
Возврат Ложь;
КонецФункции Показать
Попробуйте посмотреть тут:
Через поиск "Послать()", найдете раздел "Работа с интрнетом", там есть ссылки на документацию. Может быть поможет информация в решении вашей проблемы.
Через поиск "Послать()", найдете раздел "Работа с интрнетом", там есть ссылки на документацию. Может быть поможет информация в решении вашей проблемы.
А под временем
Если несколько раз письмо отсылаете в цикле то среднее время получается меньше?
У меня где-то по секунде-две уходит.
А так же было бы интересно узнать сколько времени у вас занимает метод "Послать()"
понимается чистое время именно этого метода? Или инициализацию то же считаете?
Если несколько раз письмо отсылаете в цикле то среднее время получается меньше?
У меня где-то по секунде-две уходит.
(12) чисто метод Послать(). В том-то и дело, что отладчиком "глубже" не могу посмотреть.
Пакетную отправку не проверял, но судя по показаниям пользователей время отправки последующих писем не уменьшается.
1-2 секунды - это с какого почтового сервера?
Пакетную отправку не проверял, но судя по показаниям пользователей время отправки последующих писем не уменьшается.
1-2 секунды - это с какого почтового сервера?
(14) exchange
Важно проверить именно метод. Может на инициализацию много времени уходит.
Тогда разнести инициализацию (в начало сеанса, например) и непосредственно отправку.
Типа было в цикле:
инициализация
отправка письма
иницализация
отправка письма
А должно стать:
инициализация
отправка письма
отправка письма
отправка письма
Важно проверить именно метод. Может на инициализацию много времени уходит.
Тогда разнести инициализацию (в начало сеанса, например) и непосредственно отправку.
Типа было в цикле:
инициализация
отправка письма
иницализация
отправка письма
А должно стать:
инициализация
отправка письма
отправка письма
отправка письма
ё моё. щас тайминг сделал 20 сек Послать()
Меня спасает то, что это админская рассылка...
Извините за неверные данные. Раньше было не мгновенно, но явно не так медленно как сейчас.
ВнешняяОбработка.....Форма.Форма 236 Почта.Послать(Сообщение); 1 20,252842 99,74
Меня спасает то, что это админская рассылка...
Извините за неверные данные. Раньше было не мгновенно, но явно не так медленно как сейчас.
ВнешняяОбработка.....Форма.Форма 236 Почта.Послать(Сообщение); 1 20,252842 99,74
можно проверить отправку через CDO для теста писем 10, если отправка пойдёт быстро значит проблема на стороне 1с, если так же медленно то смотреть настройки Exchange
Функция ОтправитьПисьмо()
ИмяФайла = "C:Test.xml";
Сервер = "smtp.mail.ru";
Порт = "465";
Получатель = "@";
Отправитель = "@";
Пароль = "";
Попытка
CDO = Новый COMОбъект("CDO.Message");
Исключение
Сообщить("Ошибка: объект CDO.Message не создан");
Возврат Ложь;
КонецПопытки;
CDO.From = Отправитель;
CDO.To = Получатель;
CDO.Subject = "ТемаПисьма";
CDO.textbody = "Текстовое письмо";
CDO.BodyPart.Charset = "windows-1251";
CDO.HTMLBody = "HTML-письмо";
CDO.HTMLBodyPart.Charset = "windows-1251";
CDO.AddAttachment(ИмяФайла);
//По умолчанию 1-использовать каталог Pickup
Item = "http://schemas.microsoft.com/cdo/configuration/sendusing";
CDO.Configuration.Fields.Item(Item).Value = 2;
//Адрес SMTP сервера
Item = "http://schemas.microsoft.com/cdo/configuration/smtpserver";
CDO.Configuration.Fields.Item(Item).Value = Сервер;
//0-без утентификации
//1-базовая аутентификация
//2-аутентификация NTLM
Item = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate";
CDO.Configuration.Fields.Item(Item).Value = 1;
//Использовать SSL
Item = "http://schemas.microsoft.com/cdo/configuration/smtpusessl";
CDO.Configuration.Fields.Item(Item).Value = 1;
//Имя пользователя SMTP сервера
Item = "http://schemas.microsoft.com/cdo/configuration/sendusername";
CDO.Configuration.Fields.Item(Item).Value = Отправитель;
//Пароль пользователя SMTP сервера
Item = "http://schemas.microsoft.com/cdo/configuration/sendpassword";
CDO.Configuration.Fields.Item(Item).Value = Пароль;
//Порт сервера
Item = "http://schemas.microsoft.com/cdo/configuration/smtpserverport";
CDO.Configuration.Fields.Item(Item).Value = Порт;
//Таймаут
Item = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout";
CDO.Configuration.Fields.Item(Item).Value = 60;
//Обновление настроек
CDO.Configuration.Fields.Update();
Попытка
CDO.Send();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецФункции Показать
Проверил штатно через внешний почтовый сервер mail.ru - отправка 0.5 секунды (я так понимаю это тоже самое, что предложили в (20)), плюс при тестировании отправки через Exchange на внешнюю почту увидел, что ошибку про "Почтовый ящик не доступен (SMTP error code 550 550 5.7.1 Unable to relay)" выдает очень быстро, т.е. инфу от 1С получает быстро.
Из чего делаю вывод и надеюсь, что все-таки дело в настройках Exchange. Осталось как-то узнать в каких именно )
Из чего делаю вывод и надеюсь, что все-таки дело в настройках Exchange. Осталось как-то узнать в каких именно )
(20) попробовал отправить через CDO через Exchange - тоже в пределах секунды.. правда SSL = 0 делал, т.к. с 1 не отправляет
Да ладно.. неужели это настройками Exchange не подружить нормально с 1С? и на последнем релизе все то же самое, неужели никто бы не пожаловался..
Да ладно.. неужели это настройками Exchange не подружить нормально с 1С? и на последнем релизе все то же самое, неужели никто бы не пожаловался..
В свое время намучался с интернет-почтой из встроенного языка. CDO задачу выполняет без лишних заморочек и заскоков, а главное админам из Европы не нужно ничего втирать почему что-то нужно подшаманить, когда у них все работает и про капризы загадочной русской платформы.
попробуй время ожидания ответа сервера уменьшить, потом будешь анализировать код ошибки
хотя по хорошему проще логи сервера почитать
хотя по хорошему проще логи сервера почитать
Львиная доля времени в этом уходит именно на аутоитентификацию на сервере, копайте в этом направлении. Т.е. время именно загрузка письма на сервер в вашем случае занимает очень мало времени, даже при любой нагрузке в сети.
у нас та же проблема - отправка 10 секунд, админы никак побороть ее не могут. через CDO отправляется за 1 сек.
СпособSMTPАутентификации перепробовал все - всегда 10 секунд.
Для серверов 1с разрешен open relay. Авторизации не требуется для SMTP протокола.
антиспам защита отключена
файервола между сервером 1с и почтовым - нет
Куда копать что еще может быть???
СпособSMTPАутентификации перепробовал все - всегда 10 секунд.
Для серверов 1с разрешен open relay. Авторизации не требуется для SMTP протокола.
антиспам защита отключена
файервола между сервером 1с и почтовым - нет
Куда копать что еще может быть???
(38) Столкнулась с такой же проблемой при отправке писем из 1С
Решение, которое мне помогло:
очистить в настройках учетной записи параметры IMAP (поля обязательные для заполнения, поэтому делала это через обработку "Редактирование реквизитов" в флагом "ОбменДанными = Истина"
Теперь почта летает
Решение, которое мне помогло:
очистить в настройках учетной записи параметры IMAP (поля обязательные для заполнения, поэтому делала это через обработку "Редактирование реквизитов" в флагом "ОбменДанными = Истина"
Теперь почта летает
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот