Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Проверка достоверности адреса исходящего письма в скрипте MS Outlook

Ответить
Настройки темы
Разное - Проверка достоверности адреса исходящего письма в скрипте MS Outlook

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Jean55:
1. Как я уже спрашивал и это важно - "какие установки Outlook нужно изменить, чтобы при попытке программно отправить письмо по несуществующему адресу выходило сообщение об ошибке, »
Нет таких, и быть не может, ибо никакая почтовая программа не в состоянии определить существование почтового адреса без организации внутри себя почтового сервера и его контакта с почтовым сервером, обслуживающем домен, куда отправляется письмо.
Цитата Jean55:
…а не отправлялось сообщение на мой адрес?. Или хотя-бы, как отключить эти милые сообщансы на мой мэйл." »
Пишите в комитет по стандартизации, составляющий RFC, чтобы они включили в него Ваше требование о запрете уведомления об отсутствии на почтовом сервере соответствующей записи.
Вы можете использовать блокирование по спискам серверов и ключевым словам в адресе/теме/содержимом письма. Т.е., обычная фильтрация. Но суть в том, что тогда Вы не узнаете, что Ваше письмо на данный почтовый адрес не дошло.

Вам бы следовало попробовать то, что предлагал сделать выше Delirium, и в #7, и в #9 — Вам многое стало бы понятней.

Отправлено: 22:50, 20-09-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ребята, извините ну не могу да и буду я ипользовать программы на РНР, С .... - это обязательная инсталляция программ, и их совмесное использование, много копания, чтобы понять что и как, (ведь я их, не знаю), обеспечение отсутствия конфликтов с Фоксом. Ну да что я Вам рассказываю - сами представляете, что значить хоть чуть-чуть освоить новый язык. Простым дёром чужих примеров, увы не обойтись. Насчет Telnet - покопал пару часов в Инете, ну кое-что конечно понял, но в результате вопросов больше, чем ответов - то есть опять же копать - спрашивать - копать. Хотя конечно интересно, чесное слово - это насчет #7, и наверное #8 (а не #9 в предыдущем письме). Без всяких обид, правда.
Повторюсь: лично мне решение надо искать под Объектной моделью MS Outlook и VBA - он более-менее прост, и как известно инсталлируется автоматом, при установке MS Office. Да и все они (VFP, Outlook, VBA) - продукты одной фирмы, т.е. меньше конфликтов.
А решение, похоже есть и довольно простое - отследить уход письма из папки "Исходящие", затем проверить
во "Входящих" появление служебного письма о неверном адресе (надеюсь, конечно, что удаление из
"Исходящих", идет только после получения по SMTP подтверждения о доставке письма получателю, т.е. появления письма в папке "Входящие") , а затем его (служебное письмо) чесно грохнуть, сделав в Фоксе запись о неработоспособности этого мэйла.
Поэтому, если можно подскажите, как пишутся строки методов:
- "удалить письмо" (по моему - ????????.Remove.????????) -> кое что накопал, но все равно не все ясно
- "выделить месяц" и "выделить год" (из даты письма) это нужно для поиска письма в другом месте программы->
вааще ничо не нашел (а по логике должны быть - к примеру в Фоксе это часто используемые функции)
- "найти письмо" (по моему - ????????.Find.????????) -> кое что накопал, но все равно не все ясно
Т.е. опять та же самая промблема - отсуствие толкового сайта, где Объектная модель нормально расписана желательно по русски (естественно с функцией поиска). Обычное лазанье по Инету - это собирание информации по крохам и как обычно, проблемы с составлением строки поиска.
Так что еще раз прошу прощения и если можно подскажите по этим методам или с ссылкой на толковый сайт.
Е. Шапиро

Отправлено: 02:21, 22-09-2011 | #12


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Jean55, ты столкнешься с одной проблемой, причем сразу - да, по RFC почтовые серверы ОБЯЗАНЫ отправлять NDR (non-delivery report), если адресата не существует, но в реальности часто это отключают. К примеру, у меня отключено, т.к. 98% спама (а это около 350 000 писем/мес) не имеет верного SMTP адреса, и рассылать тонны сообщений о недоставке - лишний трафик и нагрузка. Да, это неверно, а что делать.
Именно поэтому ты можешь и не получить ответа о том, что адресат не существует.

Я не могу понять, чем тебе не понравился совет в #9. Смотри:
Ты ОДИН раз формируешь список своих адресатов. Загружаешь его на сайт проверки адресов. Получаешь результат, и потом в фоксе делаешь как хочешь - или удаляешь неработающий мейл, или ставишь пометку, что он рабочий. И ВСЕ. После этого перед отправкой достаточно будет проверить флаг напротив ящика и предпринять дальнейшие действия.
Все, что мы писали в #7 и #8 - есть по сути, ручная обработка того, что я написал в #9.
Не бейся в стену с одним решением, рассмотри и другие варианты.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:35, 22-09-2011 | #13


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Jean55, я не понял при чём тут PHP или С. Я предлагал Вам попробовать отправить несколько писем посредством telnet, «ручками» набирая команды протокола SMTP, дабы Вы получили некоторое представление о том, из чего состоит и как именно работает протокол SMTP, не более.

Реализуйте рассылку через CDO непосредственно из-под Visual FoxPro — головной боли втрое меньше будет, изучать лишнего ничего не потребуется, кроме объектной модели самого CDO, где многие интерфейсы похожи на аналогичные из Microsoft Outlook. Можно даже непосредственно работать с протоколами через сокеты. Впрочем, решать Вам.

Цитата Jean55:
Т.е. опять та же самая промблема - отсуствие толкового сайта, где Объектная модель нормально расписана желательно по русски (естественно с функцией поиска). Обычное лазанье по Инету - это собирание информации по крохам и как обычно, проблемы с составлением строки поиска. »
Что тут скажешь?! Разве что крылатую фразу: «Говорила мама — учи английский»:
Microsoft Outlook 2003: Outlook Object Model;
Microsoft Outlook 2007: Outlook Object Model Reference
Я сомневаюсь, чтобы кто-нибудь переводил полностью всю документацию: объектная модель Microsoft Outlook.

Последний раз редактировалось Iska, 22-09-2011 в 03:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:57, 22-09-2011 | #14


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


PHP или Си - потому что команды под telnet написаны на PHP, а Си - просто так за компанию, я просто видел и примеры написания скриптов для OUTLOOK и на Си. А нужна ли инсталляция PHP для telnet - это тот вопрос, который я не стал задавать, да похоже и не надо уже и так ясно.

Цитата Delirium:
ты столкнешься с одной проблемой, причем сразу - да, по RFC почтовые серверы ОБЯЗАНЫ отправлять NDR (non-delivery report), если адресата не существует, но в реальности часто это отключают. К примеру, у меня отключено, т.к. 98% спама (а это около 350 000 писем/мес) не имеет верного SMTP адреса, и рассылать тонны сообщений о недоставке - лишний трафик и нагрузка. Да, это неверно, а что делать »
Тут уж я чевой-то не понял. Наверно не правильно объяснил.Попробую ишшо раз.
Фокс - это чистый файл-сервер и модуль отправки будет только на одном компе (у начхальника - остальные обойдутся), т.е. входящий мэйл всегда только один и на него же приходит аттачем почты общее письмо, которое надо поделить и отправить дальше.
Теперь кусок из -под Фокса:
******************************************************************
**** MailItem — представляет собой сообщение электронной почты. ****
LOCAL loMailItem As OUTLOOK.MailItem
objMail = loOutlook.CreateItem(olMailItem) && новое письмо из под Outlook
objMail.To = "bla_bla_bla@mail.ru" && адрес куды -> заранее неверный
* и
* т.
* д.
objMail.Send && посылаю письмо подальше
******************************************************************
Письмо попадает в "Исходящие", а затем OUTLOOK сам пытается спихнуть его дальше, без моего участия.
Потом, если письмо прошло, то запись в Исходящих" ликвидируется, а в "Отправленных" появляется - все это и так, понятно. А вот ежели адреса мэйла не существует, то запись в Исходящих" также ликвидируется, а появляется служебное письмо в МОЕЙ почте "Входящие", что нэт такой партии. Текст письма формирует OUTLOOK и мой адрес наверняка берется из него же, родимого (при формировании данных исходящего письма мэйл моей почты не используется).
Я тут экспериментировал со всяческими настойками OUTLOOK, при неверном адресе мэйла получателя, пытаясь отправить почту не в Исходящие", а в "Отправленные" - это позволило бы получить сообщанс об ошибке прямо в Фокс, обработать который было бы делом техники, но увы, похоже дело дохлое. А вот служебных писем об неверном адресе мэйла получателя на мою почту "Входящие получил по полной программе, что задрался удалять.
Кстати, вопрос: через сколько времени, после удаления письма из Исходящих" может появиться служебное сообщение в моей почте "Входящие"?. По логике, вроде бы удаление из Исходящих" дожно происходить именно после окончания загрузки служебного сообщения в мою почту "Входящие"?. А если нет, то 10-20 сек достатосно?

Цитата Delirium:
Ты ОДИН раз формируешь список своих адресатов. Загружаешь его на сайт проверки адресов. Получаешь результат, и потом в фоксе делаешь как хочешь - или удаляешь неработающий мейл, или ставишь пометку, что он рабочий. И ВСЕ. После этого перед отправкой достаточно будет проверить флаг напротив ящика и предпринять дальнейшие действия. »
Увы, список данных сотрудников (а в нем адрес мэйла сотрудника - один из пунктов) заполняется и редактируется не мной, а пользователяли с любого компа локалки, на котором стоит задача и никто меня ждать не захочет, пока я там что-то проверю и загружу. Таковы правила игры при работе в СУБД

За ссылки - спасибо русская MSDN у меня была, но посление две недели не работала, выдавала ошибку (не ты ли ее включил? - шютка). А вот аглицких - не было. И не такой уж большой промблем с их чтением (к примеру, я же не идиот работать с переведенным Фоксом), хотя разобраться в деталях, при чтении документации бывает сложновато, просто по русски это получается быстрее.
Е.Шапиро

Отправлено: 19:17, 22-09-2011 | #15


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Jean55:
а появляется служебное письмо в МОЕЙ почте "Входящие", что нэт такой партии. Текст письма формирует OUTLOOK и мой адрес наверняка берется из него же, родимого »
Какой почтовый сервер у тебя установлен? ПРосто так Outlook не узнает, что надо отсылать NDR тебе, это делает почтовый сервер, в котором твой адрес прописан адимнистратором почты. Это либо у тебя, либо у провайдера, в зависимости от того, где находится сервер.

Цитата Jean55:
Кстати, вопрос: через сколько времени, после удаления письма из Исходящих" может появиться служебное сообщение в моей почте "Входящие"?. По логике, вроде бы удаление из Исходящих" дожно происходить именно после окончания загрузки служебного сообщения в мою почту "Входящие"?. А если нет, то 10-20 сек достатосно? »
Да оно может ВООБЩЕ не появиться, я же тебе про это и толкую. А может и появиться, но время доставки NDR может варьироваться от пары секунд до неопределенности, все зависит от настроек почтового сервера-принимателя, его загруженного, его стабильности. Полагаться на это нельзя.

Цитата Jean55:
вы, список данных сотрудников (а в нем адрес мэйла сотрудника - один из пунктов) заполняется и редактируется не мной, а пользователяли с любого компа локалки »
Как часто изменяется список сотрудников? Бешеная текучка?

И ты пытаешься сделать операцию на клиенте, хотя это в корне неверно. Проверка существования адреса, отчеты о недоставке и прочее - это все таки больше серверные вопросы, и перекладывать их на клиента = создавать костыль.

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

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:12, 23-09-2011 | #16


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Да нет, дело тут не в языке. Просто коллега Jean55 пока плохо представляет себе всю эту механику изнутри, потому больше шаманством занимается.

Я бы вовсе отказался от Outlook и работал бы прямо через CDO. Сама библиотека «Collaboration Data Objects 1.2.1» бесплатна, доступна и легко распространяется посредством групповой политики. Проверку существования почтового адреса можно прикрутить либо непосредственно на этапе вводе адреса (если есть оттуда доступ к сети), либо перед рассылкой. В первом случае для этого будет вполне достаточно заполнить по указанному выше адресу http://verify-email.org/ и отослать форму в том же IE, а затем распарсить полученный результат (или просто проверить наличие «Result: Ok»/«Result: Bad»). Для второго — аналогично по второму вышеприведённому адресу — http://tools.email-checker.com/.

2Delirium: я тут ещё раз посмотрел на http://verify-email.org/ — для любого адреса на ***@mail.ru даёт результат, согласно ответа сервера — «Result: Ok». Выходит, что некоторые и так борются?!

Отправлено: 05:15, 23-09-2011 | #17


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Iska:
Выходит, что некоторые и так борются?! »

Угу, есть и такое дело

Да, на указанных адресах есть утилита Email Verifier - http://www.email-unlimited.com/email_verifier.html
Там есть очень интересная опция:
Цитата:
It allows also to import email addresses from external sources using ODBC/OLEDB: MS SQL, Access, Oracle, Dbase, Paradox, and Foxpro.
ну ничего не мешает прикрутить ее к своим программам и АВТОМАТИЧЕСКИ обновлять данные по адресам через планировщик.
И еще там есть Email Verifying Script - тоже очень полезная в твоем случае вещь.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:01, 23-09-2011 | #18


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да понял я люди понял, точнее начинаю понимать - недаром же почти месяц стенку лбом прошибаю.
Сначала, чтобы закрыть тему проверки через "Исходящие" и "Отправленные" - в свойствах письма есть и "From:" и "To:", так что примут его за спам - не знаю. На моем домашнем компе - проходит без промблем. Кстати чем у Вас отсекается спам?. Было бы интересно поэкспериментировать со служебным сообщением.
Насчет почтового сервера: у меня, так он то как раз пропускает, а вок какой установлен у клиента - пока просто не знаю, не хоцца показываться без хоть какого - либо результата. Кстати , это тоже важно (почтовый сервер), но отложу на потом. А все остальные возражения и разъяснения вполне логичны и похоже понятны.

Цитата Delirium:
Как часто изменяется список сотрудников? Бешеная текучка? »
Понятия не имею, я у них работник приходящий. Мог бы и отказаться от работы с почтой, но это интересно лично мне.

Насчет Фокса: для файл-серверных систем малых предприятий еще очень даже... (имел возможность сравнить с наработками на других языках, кстати довольно свежими), мне уже не 30 да и коней на переправе не меняют.
В общем, подожду, что там получится с Sedna, а там видно будет.
В любом случае - помощь хорошая (да! - кстати не пойму как отправить благодарности на форуме, а надо бы).
Да и с CDO думаю теперь можно попробовать (есть примеры с ним для Фокса, но тогда я там мало что понял). Спасибо, думаю еще обращусь с вопросами.
Е.Шапиро

Отправлено: 13:34, 23-09-2011 | #19


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


И ишшо вопрос - думаю попроще. При использовании метода Find:

loOutlook = CREATEOBJECT("outlook.application")
loMapi = loOutLook.GetNameSpace("MAPI")
loFldr = loMapi.GetDefaultFolder(6)
olFind = loFldr.Items.Find('[Subject] = "Налоги_июнь_2011"') -> заголовок входящего письма не находит, т.е.
olFind = .NULL. (письмо где-то месячной давности)
а вот поиск того же самого olFind с другой текстовой строкой
olFind = loFldr.Items.Find('[Subject] = "Delivery Status Notification (Failure)"') где строка - это заголовок
служебного сообщения об ошибке (письмо самое свежее в списке) -> находит!!!. Результат - объект.
Наименования драл копированием из свойств письма в Outlook - так что без ошибок в строке. Совершено не понятно, в чем причина?. И как с объекта выцыганить нумер письма?
А вот Email Verifier и проч. можно и нужно использовать в другом месте - на стадии записи мэйла в данные сотрудника, где запрос с использованием внешних программ вполне уместен (кстати, я эту программу находил, когда искал утилиту с проверкой мэйла из командной строки - одну нашел, но так и не понял, куды она ответ отсылает).
Е.Шапиро

Отправлено: 23:14, 23-09-2011 | #20



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Проверка достоверности адреса исходящего письма в скрипте MS Outlook

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход