|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Проверка достоверности адреса исходящего письма в скрипте MS Outlook |
|
Разное - Проверка достоверности адреса исходящего письма в скрипте MS Outlook
|
Новый участник Сообщения: 15 |
Профиль | Отправить PM | Цитировать Привет чесной компании!
Вообще - то меня недавно жисть заставила заняться MS Outlook (у меня основная специализация - VisualFox), но понадобился модуль приема-отправки почты через Инет, из под Fox_а, и использование MS Outlook выглядит предпочтительно. Хотя лично мне он не сильно нравится и это ещё мягко сказано (отправленные письма доставляются в папку "Исходящие", а не "Отправленные"; при работе с почтой нужно, чтобы MS Outlook был открыт и.т.д.). На данный момент модуль программы приема - отправки, по крайней мере в тестовом режиме работает (используется VBA), но возникла проблема проверки достоверности адреса ИСХОДЯЩИХ писем (это вроде бы должно быть ДО выполнения метода ....Send()?). Попытки поиска подходящих методов и событий Объектной модели MS Outlook в Инете ничего не дала, хотя копал долго. В Help_е русского Outlook, стоящего у меня - нет ничего (это прерогатива VBA). Help VBA под Outlook_ом - на аглицком ну и как сформулировать строку запроса?. Нашел и скачал отдельный русифицированный Help VBA (версия. 1.0.1.0, 1,65Мб) -> ни черта по объектам, методам и событиям для скриптов для Объектной модели MS Outlook. Единственный сайт на котором можно было кое-что найти по Объектной модели на русском (с контекстным поиском) - <<http://msdn.microsoft.com/ru-ru/library/ms268893.aspx>> - уже почти неделю не работает. Короче, пока - тупик. А начальство - то жаждет результата. В общем - может ли кто - нибудь подсказать, какие методы или свойства VBA для Объектной модели надоть для проверки достоверности адреса исходящего письма использовать и в каком месте скрипта? Было бы также неплохо получить ссылку на приличный русский справочник по описанию объектов, методов и событий для скриптов под VBA Объектной модели MS Outlook (обязательно с поиском!). Буду очень благодарен. Е. Шапиро |
|
Отправлено: 23:22, 16-09-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать У меня — находит (VBScript):
Option Explicit Const olFolderInbox = &H06 Dim objOutlook Dim objNameSpace Dim objMAPIFolder Dim collItems Dim objMailItem Set objOutlook = WScript.CreateObject("Outlook.Application") Set objNameSpace = objOutlook.GetNameSpace("MAPI") Set objMAPIFolder = objNameSpace.GetDefaultFolder(olFolderInbox) Set collItems = objMAPIFolder.Items Set objMailItem = collItems.Find("[Subject] = 'Налоги_июнь_2011'") Do Until objMailItem Is Nothing With objMailItem WScript.Echo "EntryID:", .EntryID WScript.Echo "===============" WScript.Echo "To: ", .To WScript.Echo "Subject:", .Subject WScript.Echo "Body:" WScript.Echo "---------------" WScript.Echo .Body WScript.Echo "---------------" WScript.Echo End With Set objMailItem = collItems.FindNext Loop Set objMailItem = Nothing Set collItems = Nothing Set objMAPIFolder = Nothing Set objNameSpace = Nothing Set objOutlook = Nothing WScript.Quit 0 Цитата:
|
|
Отправлено: 04:52, 24-09-2011 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Цитата Iska:
. Цитата Iska:
Цитата Iska:
Кус моего модуля под Фоксом :l oCnt = loFldr.Items.Count && всего писем в "Входящих" IF loCnt>0 FOR i=1 TO loCnt WAIT loFldr.Items(i).Subject WINDOW NOWAIT и т.д. ...... ************************************************************* так меня интересовало вычисление нумера " i " а не EntryID, ведь похоже,что " i " - это тоже свойсто только наверное папки, а не письма и без перебора писем в папке до него не добраться. И все таки Цитата Jean55:
Е. Шапиро |
||||
Отправлено: 15:10, 24-09-2011 | #22 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Jean55:
Цитата:
Цитата Jean55:
|
|||
Отправлено: 15:28, 24-09-2011 | #23 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата Jean55:
Цитата Jean55:
|
||
------- Отправлено: 15:50, 24-09-2011 | #24 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Jean55:
А AdvancedSearch и LastName - гляну завтреча, сегодня уже лом. Кстати по моему в строке sFilter = "[LastName] > 'LZZZ' And [LastName] < 'N'" - по моему ошибка, не 'N' а 'M', ежели по Additional Notes. А если нет - то почему? С уважением Е.Шапиро |
|||
Отправлено: 23:10, 24-09-2011 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Jean55:
Jean55, а попробуйте пока просто проверить — сохранить мой код в файле с расширением «.vbs» в кодировке ANSI (windows-1251), и запустить его из командной строки на исполнение: Найдёт ли он у Вас совпадения? Все ли совпадения переберёт? И отпишитесь сюда. Цитата Jean55:
Цитата Jean55:
Цитата Jean55:
'M' > 'LZZZ' и 'M' < 'N' 'Mail' > 'LZZZ' и 'Mail' < 'N' 'MMM' > 'LZZZ' и 'MMM' < 'N' 'MZZ' > 'LZZZ' и 'MZZ' < 'N' |
||||
Отправлено: 01:06, 25-09-2011 | #26 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Общее и полное здрасьте всем. После отпусков и прочих дел (включая, естественно и самостоятельную работу и самостоятельные разборки с возникающими вопросами) можно сделать некоторые промежуточные выводы.
Модуль (пока что - тестовый, делающий усё от начала до конца единым файлом) работает!!! Т.е. реально выполняется (и с вашей помощью): - скачать общий .pdf файл налогов - поделить на отдельные .pdf страницы - из каждой страницы выделить фамилю и имя и из базы Фокса считать мэйл этого человека (кстати, та ещё задачка! ) - производится отправка этих отдельных .pdf страниц на почту этих людей Сейчас производится доводка (в основном вопросы сервиса) - программная проверка загрузки и загрузка, при необходимости Outlook (ну не верю я что пользователли работают всегда по инструкции и без проколов!!!) - программная загрузна новых входящих писем Outlook - создание (по требованию) списков работников, которые есть в общем .pdf файле и нет в базе Фокса и, естественно наобормот. Наверняка будут ишшо и другие. Но это в основном Фоксовские прибамбасы, а поэтому надеюсь без серьёзных промблем (тьфу-тьфу шобб не сглазить). Затем надо будет расташшить эту программу по объектам модуля обработки почты, что тоже только вопрос техники и времени. А у меня сейчас вопрос, чесно говоря не принципиальный (можно обойтись просто сообщением на экран "Загрузите Outlook... ") , но усе равно интересно: как программно обновить почту Outlook средствами Объектной модели Outlook? Как я понял это либо событие NewMail, либо метод AddNew ( AddNew, похоже просто имеет больше параметров, что мне просто не надо, мне надо просто обновить папку Входящие), а вот как это делать - не понял ни черта, хотя примеров дофига и более. Два дня (с перерывами) копал. Например в MSDN: "......NewMail используется для выполнения пользовательских действий при получении пользователем сообщения электронной почты." О каком пользователе и сообщении электронной почты идет речь? Ведь по логике Outlook, при нормальном пуске все запрашивает самолежательно. Мне же нужно принудительное обновление, поскольку, похоже обновление входящей почты при запуске Outlook из под Фокса не происходит... Ну и т.д. Т.е. как реально желателен кус кода VBA на принудительное обновление входящей почты и если можно с разъяснениями. Буду очень благодарен Е. Шапиро |
Отправлено: 23:55, 11-11-2011 | #27 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Jean55:
SyncObject Object --> Start Method. Не забудьте убедиться, что в свойствах соответствующей группы отправки/получения почты в параметрах соответствующей учётной записи установлены флажки «[*] Отправка почты», «[*] Получение почты». |
|
Отправлено: 01:50, 12-11-2011 | #28 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Спасибо, SyncObject Object и Start Method - вполне пошло и работает. Хотя конечно не без некоторых непоняток : при прогоне всей задачи несколько раз подряд - свойство ....SyncObjects.Count своего значения не меняет. Описание: "Возвращает указание на количество объектов в указанной коллекции. Только для чтения."
И сразу же вопрос: количество чего? Если новых объектов (записей почты???) - то после первого же прогона значение ....SyncObjects.Count должно быть равно нулю, ведь данные уже синхронизированы, а оно не обнуляется. Или это только сегодняшняя почта - а если компунтер (или даже просто Outlook) несколько дней не включали, то будет ли качать от последнего включения (синхренизации данных)? Конечно, как мед- так и ложкой: а можно ли как-то закачивать почту по выбору, например по свойству .Subject. Ни у SyncObject, ни у SyncObjects этого свойства нетути - нужно что-то иное. В ссылке "Объект Outlook.NameSpace, его свойства и методы - Asklt.RU" (см выше) есть такие строки: ************************************************************** ... ... oNamespace.SyncObjects("Все учетные записи").Start End Sub '… и ловим события появления нового сообщения Private Sub oItems_ItemAdd(ByVal Item As Object) MsgBox Item.Subject End Sub В документации Microsoft для события ItemAdd указано, что оно..... ************************************************************** Вроде бы то шо надоть и если зацепиться за Item.Subject то можно все раскрутить в куче с .SyncObject, но абсолютно не понятно, почему ".... и ловим события появления нового сообщения " ПОСЛЕ программной загрузки почты ,а событие ItemAdd нигде в примере не прописано. И ишшо стоит ли как-то ускорять поиск конкретного письма во "Входящих" с помощью метода AdvancedSearch() (мутный он какой-то, как деревенский самогон - поиск в асинхронном режиме, который пока непонятно как прерывать; какие-то странные строки фильтра - "urn:schemas:mailheader:subject " - только и остаётся драть не разбираясь да и нет времени). Т.е. реально ли он шустрее обычного тупого перебора и (хотя бы ориентировочно) при каком количестве записей почты? Может просто предусмотреть зачистку данных хотя-бы раз в год и "не морочить себе две пачки маргарина"? Буду очень благодарен за ответ. Е. Шапиро |
Отправлено: 00:27, 18-11-2011 | #29 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Jean55:
Цитата:
Цитата Jean55:
Само событие генерируется самим приложением. Вы получите столько вызовов этой процедуры, сколько будет добавлено объектов. Цитата Jean55:
1) я не пользуюсь Microsoft Outlook, и никогда с ним не работал; 2) вытекающее из первого — если бы я даже захотел попробовать — у меня не найдётся подходящего объёма данных базы писем. |
||||
Отправлено: 01:24, 18-11-2011 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Проверка отправки письма с файлом абоненту | dark-------13 | Скриптовые языки администрирования Windows | 1 | 05-05-2011 18:02 | |
Интернет - Outlook Express не открывает письма | Palomnik | Microsoft Windows 2000/XP | 1 | 14-11-2010 16:05 | |
Проверка внешнего IP адреса | Vanilla Dragon | AutoIt | 2 | 18-03-2009 18:55 | |
Не отправляются письма из Outlook Express | miikki | Хочу все знать | 3 | 22-12-2006 14:16 | |
Outlook Express обрезает письма! | grifius | Хочу все знать | 1 | 17-02-2005 07:13 |
|