Можно ли как-то программировать Аутглюк?
Есть ряд почтовых клиентов, с помощью которых отправдяется определённый файл. Нужно, чтобы в момент отправки файла выполнялась программа его резервного копирования.
Вопросы:
Можно ли писать макросы для Outlook?
Если что, насколько сложно написать прогу-резидент, которая будет перехватывать момент отправки письма, смотреть, что к нему прикреплено и выполнять в зависимости от этого какие-либо действия? Есть ли примеры или наработки? Есть у кого идеи?
Задача такая:
Есть ряд почтовых клиентов, с помощью которых отправдяется определённый файл. Нужно, чтобы в момент отправки файла выполнялась программа его резервного копирования.
Вопросы:
Можно ли писать макросы для Outlook?
Если что, насколько сложно написать прогу-резидент, которая будет перехватывать момент отправки письма, смотреть, что к нему прикреплено и выполнять в зависимости от этого какие-либо действия? Есть ли примеры или наработки? Есть у кого идеи?
Всё, задача отпала...:{
Всё, задача отпала...:{
Да, отпала?!, ну так для тех кто наткнется на этот вопрос - можно программировать Outlook. У него своя модель объектов как и у Excel, Word и можно абсолютно спокойно как писать в нем самом макросы на Visual Basic так и (через технологию COM) управлять Outlook'ом из любого другого приложения. Если вы приграммируете на VB и VBA то вам еще доступна возможность перегрузки событий объектов Ourlook (через дерективу WithEvents).
Т.е. указанная выше задача по перехвату момента отправки, а также извления и сохранения вложения решается абсолютно спокойно.
Да, отпала?!, ну так для тех кто наткнется на этот вопрос - можно программировать Outlook. У него своя модель объектов как и у Excel, Word и можно абсолютно спокойно как писать в нем самом макросы на Visual Basic так и (через технологию COM) управлять Outlook'ом из любого другого приложения. Если вы приграммируете на VB и VBA то вам еще доступна возможность перегрузки событий объектов Ourlook (через дерективу WithEvents).
Т.е. указанная выше задача по перехвату момента отправки, а также извления и сохранения вложения решается абсолютно спокойно.
А как?
Т.е. в аутглюке макрос написать, как я понимаю, нельзя. Тоесть, надо писать программу - резидент, которая будет отлавливать запуск копий аутглюка, в процессе работы аутглюка отлавливать событие отправки письма и проверять, что в нём?
А как?
Т.е. в аутглюке макрос написать, как я понимаю, нельзя. Тоесть, надо писать программу - резидент, которая будет отлавливать запуск копий аутглюка, в процессе работы аутглюка отлавливать событие отправки письма и проверять, что в нём?
Неа, можно, в этом смысле он ничем не отличается от Excel и Word. Тот же VB редактор, компллятор версии 6.3 (для Office 2002). Можешь посмотреть и убедиться. Единственное отличие - нет пункта - запись макроса (в смысле запись макроса по действиям пользователя).
Просто очень часто обычно есть прога в Excel или Access и необходимо просто переслать письмо или проверить почту, то тогда конечно Outlook используют через COM автоматизацию, хотя конечно можно все сделать наоборот - Outlook будет по ходу запускать Excel и что-то в нем творить. Главное не надо думать, что если вам надо отслеживать приход письма в Outlook, то это обязательно надо в самом Outlook, нет, совершенно не обязательно, можно перегружать события и подключенных/созданных объектов (CreateObject/GetObject).
Так что при выборе где будет находится основной код программы обычно придерживаются того правила, что собственный код, находящий внутри прграммы, выполняется быстрее, чем тот же набор команд но уже выполняемый через COM.
Неа, можно, в этом смысле он ничем не отличается от Excel и Word. Тот же VB редактор, компллятор версии 6.3 (для Office 2002). Можешь посмотреть и убедиться. Единственное отличие - нет пункта - запись макроса (в смысле запись макроса по действиям пользователя).
Просто очень часто обычно есть прога в Excel или Access и необходимо просто переслать письмо или проверить почту, то тогда конечно Outlook используют через COM автоматизацию, хотя конечно можно все сделать наоборот - Outlook будет по ходу запускать Excel и что-то в нем творить. Главное не надо думать, что если вам надо отслеживать приход письма в Outlook, то это обязательно надо в самом Outlook, нет, совершенно не обязательно, можно перегружать события и подключенных/созданных объектов (CreateObject/GetObject).
Так что при выборе где будет находится основной код программы обычно придерживаются того правила, что собственный код, находящий внутри прграммы, выполняется быстрее, чем тот же набор команд но уже выполняемый через COM.
Хорошо. а как заложиться на использования альтернативных клиентов? TheBat, например, или Lotus?
Иногда, когда нужно выполнить какой-нибудь сильно зациклинный код, разница между выполнением его в родной среде и через COM может быть очень существенна, а при этом возможность перенести основной код программы в эту среду нет, то прибегают к другой хитрости.
Например у нас есть база Access, которая открывает Excel, сливает туда данные из таблицы для отчета, а потом еще занимается его форматированием. И вот представте ей приходится пробегать несколько раз по большому кол-ву строк, устанавливая нужное форматирование и т.п. и т.д.
И вот тогда делают так. Программным способом, через тот же COM, добавляют модуль и записывают в него макрос, после чего просто запускают этот макрос в своем родном приложении. Тут на форуме как раз был топик по программному добавлению кнопки на лист в Excel'е и кода обработчика события нажатия на эту кнопку.
1. использовать универсальный почтовый стандарт MAPI. Все хороший почтовые программы поддерживают MAPI и сообщают системе о своей поддержке, поэтому программе не нужно думать какая программа будет запущена, код будет все равно один и тот же (а система запустит почтовую программу по умолч.). Подробный пример отправки письма с вложением был в одном из топиков на форуме.
2. Использовать свою собственную библиотеку (валяются в инете несколько наиболее удачных). Она находится в твоей программе и реализует сетевой протокол SMTP или POP для отправки письма. Т.е. занимается тем, чем занимаются собственно говоря сами почтовые программы.
Если надо универсальное решение, т.е. просто надо отправить письмо сосвложением любым способом, то есть два способа:
1. использовать универсальный почтовый стандарт MAPI. Все хороший почтовые программы поддерживают MAPI и сообщают системе о своей поддержке, поэтому программе не нужно думать какая программа будет запущена, код будет все равно один и тот же (а система запустит почтовую программу по умолч.). Подробный пример отправки письма с вложением был в одном из топиков на форуме.
2. Использовать свою собственную библиотеку (валяются в инете несколько наиболее удачных). Она находится в твоей программе и реализует сетевой протокол SMTP или POP для отправки письма. Т.е. занимается тем, чем занимаются собственно говоря сами почтовые программы.
Если я правильно понял, 1 вариант позволяет отслеживать посылку сообщения практически любым клиентом, тоесть он более предпочтителен в случае, если нужно не заставлять пользователя отправлять письма определённым клиентом, а использовать тот, который ему нравиться, но при этом контролировать это при помощи резидента?
Если я правильно понял, 1 вариант позволяет отслеживать посылку сообщения практически любым клиентом, тоесть он более предпочтителен в случае, если нужно не заставлять пользователя отправлять письма определённым клиентом, а использовать тот, который ему нравиться, но при этом контролировать это при помощи резидента?
А вот контролировать через MAPI не получится, нет он конечно сообщит успешно или неуспешно отправлено письмо, но получать уведомление о приходе новой почты как это можно сделать в COM перегрузив данное событие в Outlook'е не получится. Только если ты сам будешь периодически заглядывать туда и проверять папку входящие на предмет новой почты (дай бог чтоб ее никуда собственный макрос почтовика не переложил). Так что MAPI конечно уступает возможностям COM технологии когда ты получаешь полный контроль над приложением. Кстати TheBat тоже имеет свою COM-модель и подключив проекте надлежащую бибилиотеку также можно ковыряться и в нем.
А вот контролировать через MAPI не получится, нет он конечно сообщит успешно или неуспешно отправлено письмо, но получать уведомление о приходе новой почты как это можно сделать в COM перегрузив данное событие в Outlook'е не получится. Только если ты сам будешь периодически заглядывать туда и проверять папку входящие на предмет новой почты (дай бог чтоб ее никуда собственный макрос почтовика не переложил). Так что MAPI конечно уступает возможностям COM технологии когда ты получаешь полный контроль над приложением. Кстати TheBat тоже имеет свою COM-модель и подключив проекте надлежащую бибилиотеку также можно ковыряться и в нем.
Да нет, меня интересует как раз момент отправки. Например, хочу, чтобы при отправки в качестве вложения файла с именеи X он копировался в папку Y.
Можно токо если ты сам через MAPI создаешь письмо со вложением и отправляешь его, тогда попутно и скопировать.
В принципе, анитивирусные программы вон как то отслеживают приход и отправку почты с файлами, интересно как они это сделали... наверное опускаются на более низкий сетевой уровень, по типу firewall, контролируют стэк TCP/IP.
я конечно не знаток MAPI, но на сколько я в курсе, через MAPI так контроливать не получится.
Можно токо если ты сам через MAPI создаешь письмо со вложением и отправляешь его, тогда попутно и скопировать.
В принципе, анитивирусные программы вон как то отслеживают приход и отправку почты с файлами, интересно как они это сделали... наверное опускаются на более низкий сетевой уровень, по типу firewall, контролируют стэк TCP/IP.
А только по TCP/IP почта отправляется? Есть 100% уверенность в том, что именно этот протокол используется?
А только по TCP/IP почта отправляется? Есть 100% уверенность в том, что именно этот протокол используется?
Ну, я во первых имел ввиду стэк TCP/IP протоколов. В нем соответственно все протоколы: и низкого уровня TCP,IP и высокого POP, SMTP, FTP, Telnet, WEB.
Но конечно в итоге, никто уровня TCP/IP не пройдет. Просто я сомневаюсь что анитивирусы почту по TCP проверяют, проще наверное сразу POP, SMTP смотреть.
Ну, я во первых имел ввиду стэк TCP/IP протоколов. В нем соответственно все протоколы: и низкого уровня TCP,IP и высокого POP, SMTP, FTP, Telnet, WEB.
Но конечно в итоге, никто уровня TCP/IP не пройдет. Просто я сомневаюсь что анитивирусы почту по TCP проверяют, проще наверное сразу POP, SMTP смотреть.
Енто уже интереснее... Так глядишь, из отпавшей задачи вырастет свой антивирус на VB:D
А есть ли в VB средства, для работы с этими протоколами?