Отправка почты из под 1С, развернутой на RDP-сервере

1. stvorl 1041 12.09.18 18:38 Сейчас в теме
Добрый день, коллеги.

Имеются конфигурации КА 1, УПП, УТ 10.3 (в разных местах, вопрос гипотетический), развернутые под RDP в обычном режиме, или remote app.
Клиентские компьютеры находятся под управлением ОС Windows, в разных филиалах (в пределах маршрутизируемой внутренней сети, связанной по VPN, но не в одном сегменте с сервером). Отказаться от RDP нельзя, т.к. скорость и надежность связи с клиентскими компьютерами не позволяет вынести толстый клиент на них, что бы, конечно, все упростило.

Необходимо сделать так, чтобы при печати счета, акта или другого документа, по нажатию штатной кнопки "отправить", сформировалось бы письмо с вложением, которое можно было бы отредактировать и отправить контрагенту, дописав туда всяких приятных слов (при необходимости).

Штатный почтовый клиент, встроенный в конфигурацию, использовать бы при этом не хотелось, из за его убогости и опасения быстро загадить базу.
На клиентских компьютерах локальных имеется MS Outlook (иногда thunderbird, но можно переделать), с архивом почты (что дополнительно делает использование штатного почтового клиента конфигурации нежелательным, т.к. архив раздвоится), ящики индивидуальны у каждого пользователя, доступ к ним можно осуществить по SMTP/POP и IMAP4.

В связи с этим сломал всю голову, как это организовать.
Навскидку приходит несколько вариантов.
1. В настройках пользователей в 1С прописываем каждому ящик, логин и пароль. Перехватываем функцию отправки почты, там делаем свое письмо, авторизуемся через IMAP4, и в какую-то почтовую папку на сервер IMAP запихиваем это письмо, как черновик.
Outlook на конкретном рабочем месте его вытягивает через синхронизацию, пользователь перетаскивает черновик в исходящие, редактирует, отправляет контрагенту.
Пока остановился на том, что не знаю, как через штатный IMAP4 клиент сохранить письмо в папке. Отправить - получается, повесить как черновик - не выходит.

2. Попытаться 1С-кой поддеть клиентский Outlook через Automation (COM, наверное - пардон, я дилетант в этой части Windows) по сети, и завести в нем письмо. Возникают правда вопросы:
- как надежно настроить доступ к Outlook по сети,
- как 1С поймет, с какого IP-адреса (на котором дергать Outlook), соединяется текущий пользователь RDP, т.к. максимум что я могу легко выцепить из Windows под 1С - это имя компьютера, а поскольку клиентские компьютеры находятся в разных сегментах сети, то просто так понять его IP-адрес не получится.
Получается как-то ненадежно.
Привязывать жестко пользователей к IP-адресам тоже бы не хотелось. Несистемненько.

3. Написать "не на 1С" брокер, серверная часть которого находится на RDP-сервере, и принимает от 1С по HTTP сгенерированные письма. Затем уведомляет клиентскую часть брокера (находится на клиентском компьютере, заранее прописана в автозапуск, соединилась с серверной частью и зарегистрировалась по имени пользователя) о том, что надо вывести на экран письмо, посылает ей eml-файл, который та принимает и скармливает клиентскому Outlook-у локально.
Получается забавно, но крайне сложно и долго писать эту упряжку.

4. Завести на сервере общую папку, в которую 1С скидывало бы сгенерированные письма. На клиент повесить брокера, который бы ежесекундно опрашивал папку по сети, выдергивал с какой-то логикой (например, по имени ящика отправителя) сделанные именно этим пользователем письма, и скармливал бы локально Outlook-у.
Получается постоянное шуршание сетью Microsoft и дисками сервера.
Можно конечно повесить шару на ramdisk конечно, но получается совсем костыльно. Плюс еще ненулевой интервал опроса будет завешивать пользователей в ожидании открывающегося письма.

А может я вообще загоняюсь и как-то можно сделать все проще.

Может быть кто решал такую задачу, и подскажет (или продаст) надежное решение?
+
Вознаграждение за ответ
Показать полностью
Найденные решения
8. ilya005 123 13.09.18 03:37 Сейчас в теме +1 $m
1. Если сервер почтовый MS Exchange, на него можно кидать xml запросы, технология называется EWS в папку пользователя "черновики"
делал аналогичную систему, только для календаря

2. самое простое решение - поставить на клиента PDF принтер, на сервере печатать на этот принтер, на клиенте будет открываться окно, откуда и наживать кнопку "отправить по почте"
EliasShy; +1
2. Timur.V 78 12.09.18 18:48 Сейчас в теме +1 $m
Перенести из одной папки в другую, пример.
+
4. Xershi 1483 12.09.18 18:58 Сейчас в теме +1 $m
(1) как уже сказали отправлять от системной учетки письмо пользователю, он получает его и далее пересылает клиенту и все довольны!
+
5. Timur.V 78 12.09.18 19:00 Сейчас в теме +1 $m
Штатный почтовый клиент, встроенный в конфигурацию, использовать бы при этом не хотелось, из за его убогости и опасения быстро загадить базу.

Так это только настройки подключения к почте. В 1С письма не сохраняются (КА 1, УПП, УТ 10.3).

Поэтому, если завели несколько настроек (Органайзер -Учетные записи), пользователи при отправке могут выбрать от имени кого отправить письмо.
Если нужно сохранять отправленные, я отправляю СкрытуюКопию на почтовый ящик бухгалтера, при отправке.
+
9. stvorl 1041 14.09.18 23:42 Сейчас в теме
Короче, взвесил все за и против, провел полевое тестирование, и сделал своим способом №4.
4. Завести на сервере общую папку, в которую 1С скидывало бы сгенерированные письма. На клиент повесить брокера, который бы ежесекундно опрашивал папку по сети, выдергивал с какой-то логикой (например, по имени ящика отправителя) сделанные именно этим пользователем письма, и скармливал бы локально Outlook-у.

Брокер написал на Lazarus-е, вспомнил молодость и Delphi.
Работает. С Outlook-ом или ThunderBird-ом на клиенте. Хоть и криво, но решение, и разворачивается легко. Как сказал Ржевский, "....а там паркет старый".

Как доведу до ума, опубликую.
Спасибо всем за хорошие идеи, соответствовавшие моим вопросам.
+
11. stvorl 1041 21.09.18 10:04 Сейчас в теме
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Xershi 1483 12.09.18 18:58 Сейчас в теме +1 $m
(1) как уже сказали отправлять от системной учетки письмо пользователю, он получает его и далее пересылает клиенту и все довольны!
+
7. FarhadIlyazov 65 12.09.18 20:35 Сейчас в теме
(1)Можем продать наши наработки.
+
2. Timur.V 78 12.09.18 18:48 Сейчас в теме +1 $m
Перенести из одной папки в другую, пример.
+
3. Timur.V 78 12.09.18 18:54 Сейчас в теме
У меня, администраторы завели логин для 1с в outlook-e, у которого пароль не истекает каждые 40 дней.
И от имени этого логина отправляются все письма, пример.
+
5. Timur.V 78 12.09.18 19:00 Сейчас в теме +1 $m
Штатный почтовый клиент, встроенный в конфигурацию, использовать бы при этом не хотелось, из за его убогости и опасения быстро загадить базу.

Так это только настройки подключения к почте. В 1С письма не сохраняются (КА 1, УПП, УТ 10.3).

Поэтому, если завели несколько настроек (Органайзер -Учетные записи), пользователи при отправке могут выбрать от имени кого отправить письмо.
Если нужно сохранять отправленные, я отправляю СкрытуюКопию на почтовый ящик бухгалтера, при отправке.
+
6. FarhadIlyazov 65 12.09.18 20:32 Сейчас в теме
Мы дорабатывали базу, а точнее внешнюю печатную форму, емаил сохранили в справочнике Сотрудники. Содержание письма формируем алгоритмом, для форматирования используется html. Кстати рекомендую использовать сервисы емаил-рассылки, стандартные smtp-серверы блокируют массовые отправки сообщений. Так случилось с smtp от Джино. В итоге используем СендПлюс(не реклама).
stvorl; +1
10. stvorl 1041 14.09.18 23:46 Сейчас в теме
(6) У меня массовая рассылка не цель, отправлять надо текущие счета и акты/накладные. Само письмо сделать нет проблем, просто отправить его надо через почтовик, который находится вне RDP, и иметь возможность редактировать письмо.

Когда-то я делал массовую рассылку (опять таки, раз в месяц отправлялись счета, но надо было отправлять сразу около 2-м тысячам абонентов) таким образом, что 1С помещало eml-файлы на шару специальной linux-овой виртуалки, с которой развернутый в виртуалке скрипт (кажется на питоне или баше, не помню сейчас) забирал, и через sendmail отправлял как письма с таким интервалом, чтобы не превышать лимиты (хостер, как раз Джино, кажется был)
Работает до сих пор, кстати.
+
8. ilya005 123 13.09.18 03:37 Сейчас в теме +1 $m
1. Если сервер почтовый MS Exchange, на него можно кидать xml запросы, технология называется EWS в папку пользователя "черновики"
делал аналогичную систему, только для календаря

2. самое простое решение - поставить на клиента PDF принтер, на сервере печатать на этот принтер, на клиенте будет открываться окно, откуда и наживать кнопку "отправить по почте"
EliasShy; +1
9. stvorl 1041 14.09.18 23:42 Сейчас в теме
Короче, взвесил все за и против, провел полевое тестирование, и сделал своим способом №4.
4. Завести на сервере общую папку, в которую 1С скидывало бы сгенерированные письма. На клиент повесить брокера, который бы ежесекундно опрашивал папку по сети, выдергивал с какой-то логикой (например, по имени ящика отправителя) сделанные именно этим пользователем письма, и скармливал бы локально Outlook-у.

Брокер написал на Lazarus-е, вспомнил молодость и Delphi.
Работает. С Outlook-ом или ThunderBird-ом на клиенте. Хоть и криво, но решение, и разворачивается легко. Как сказал Ржевский, "....а там паркет старый".

Как доведу до ума, опубликую.
Спасибо всем за хорошие идеи, соответствовавшие моим вопросам.
+
11. stvorl 1041 21.09.18 10:04 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот