powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Почему не работает On_NewMail
10 сообщений из 10, страница 1 из 1
Почему не работает On_NewMail
    #33482827
OlegON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В OutLook сделал процедурку
Private Sub Application_NewMail()
для обработки входящих писем, перемещения спама и т.п. Никак не могу понять, почему иногда обработка не заводится на старте программы. Т.е. Запускаю OutLook,пошли письма, игнорируя мою обработку, ругаюсь, перезапускаю или просто Альт-F11 нажму, нажму F5 и выйду - работает. Причем иногда и на старте взводится. Какие варианты, почему так может быть?
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33483209
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вероятно, происходит (необработанная) ошибка времени выполнения где-то внутри кода Application-модуля (ThisOutlookSession).
При этом выставлен режим перехвата ошибок "Break on Unhandled Errors".
Проект тихо сваливается и замирает навсегда ( до следующего ручного перезапуска).
Попробуйте режим "Break in Class Module". По крайней мере увидите, где возникают неперехваченные ошибки.

ps
давно уже (года 3) с аутлуком не работаю, но, надеюсь не сильно соврал по памяти.
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33483619
OlegON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле я поставил On Error goto :End of program или вроде того... У кого какие варианты еще? А с отловом необработанных попробую, спасибо.
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33491731
OlegON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озадачен. Все таки не работает с самого начала мой скрипт. Т.е. запускаю Outlook и надо сразу нажать Alt-F11, иначе скрипт не отрабатывает. Хорошо, если успею, иначе читаю в понедельник весь спам за выходные :( Может его не в ThisOutlookSession помещать, еще куда-нибудь? :(
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33491911
Мшсещырф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скажи хоть версию аутлука. какие сервис-паки стоят.
может он у тебя типа 2003й и какая-нибудь повышенная безопасность от макросов включена? (2003-го не видел)
да и код бы показать можно было...
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33491917
Мшсещырф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще посмотри - не блокирует ли вба код твоя антивирусная программа
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33494494
OlegON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел, безопасности, все отключено, Касперский тоже со снятыми галочками на проверку. Но, 2003 аутлук, XP SP2, запускаю - первый раз после перезагрузки - не работает скрипт. Сам же он ниже, пользуйтесь :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Private Sub Application_NewMail()

Dim oInbox As MAPIFolder
Dim oJunk As MAPIFolder
Dim oItem As MailItem
Dim RItem As MailItem
Dim oAtt As Attachment
Dim DocIn As Boolean

On Error GoTo ErrorHandler
DocIn = False
Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox)
Set oJunk = Application.Session.GetDefaultFolder(olFolderJunk)
Set oItem = oInbox.Items.GetLast
For Each oAtt In oItem.Attachments
oAtt.SaveAsFile ("C:\TEST\" & oAtt.FileName)
If InStr(LCase(oAtt.FileName), ".doc") >  0  Then
DocIn = True
End If
Next
oItem.AutoForwarded = False

If InStr(oItem.Subject, "**Disarmed") >  0  Then oItem.AutoForwarded = True
If InStr(oItem.Subject, "**SPAM") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@positivethoughts.com") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@newfunpages.com") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@getresponse.com") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@arcamax.com") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@about.com") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@subscribe.ru") >  0  Then oItem.AutoForwarded = True
If InStr(LCase(oItem.SenderEmailAddress), "@funnies.com") >  0  Then oItem.AutoForwarded = True

If InStr(LCase(oItem.Subject), "not from spammer") >  0  Then oItem.AutoForwarded = False

If oItem.AutoForwarded Then
oItem.UnRead = False
oItem.Move (oJunk.Folders("Спам"))
ElseIf DocIn Then
Set RItem = oItem.Reply
RItem.Body = "Добрый день," & Chr( 13 ) & Chr( 13 ) & "Убедительная просьба - не присылайте вложения в формате '.doc'. В них часто бывают вирусы и читать их неудобно. Переносите текст в тело письма, а картинки прикрепляйте к письму отдельно." & Chr( 13 ) & "Спасибо за понимание." & RItem.Body
RItem.Send
ElseIf (LCase(oItem.Recipients.Item( 1 ).Address) = "xxx@servplus.ru") And (LCase(oItem.SenderEmailAddress) <> "xxx@servplus.ru") Then
Set RItem = Application.CreateItem(olMailItem)
If Trim(oItem.SenderName) = "" Then RItem.Recipients.Add ("Анонимный пользователь" & " <" & oItem.SenderEmailAddress & ">") Else RItem.Recipients.Add ("<" & oItem.SenderEmailAddress & ">")
'RItem.To = oItem.SenderName
RItem.ReplyRecipients.Add ("xxx@servplus.ru")
RItem.Subject = "AutoReply: " + oItem.Subject
RItem.Body = "Добрый день," & Chr( 13 ) & Chr( 13 ) & "Ваше письмо от " & oItem.CreationTime & " было получено нашим отделом и мы постараемся дать на него ответ в течение 24 часов."
RItem.Body = RItem.Body & Chr( 13 ) & Chr( 13 ) & "Обращаем Ваше внимание, что вся дальнейшая переписка должа вестись только на адрес xxx@servplus.ru."
RItem.Body = RItem.Body & Chr( 13 ) & Chr( 13 ) & "С уважением, отдел сопровождения ПО" & Chr( 13 ) 
RItem.Send
For Each RItem In Application.Session.GetDefaultFolder(olFolderSentMail).Items
If InStr(RItem.Subject, "AutoReply") >  0  Then RItem.Delete
Next
'oItem.ItemProperties.Remove (0)
ElseIf (LCase(oItem.Recipients.Item( 1 ).Address) = "my@servplus.ru") Then
oItem.Move (oInbox.Folders("Личные"))
End If
ErrorHandler:
End Sub

...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33495833
попробуй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Почему не работает On_NewMail
    #33497370
Фотография Drema
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я могу ошибаться, но кажется событие NewMail() происходит по окончании очередного цикла прихода новой почты, т.е. не на каждое сообщение, а один раз на всю пачку (поэтому обращаться к GetLast не совсем корректно). Оно вызывается после того как выполняются все правила (у меня лично это занимает довольно большое время, особенно на Exchange). Может оно вызывается, но с задержкой?
Все IMHO, так как вплотную с этим событием не работал.

____________________
http://potolook.positic.ru - Шаблоны, подсветка и дополнительные возможности в Outlook®
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Почему не работает On_NewMail
    #36105468
xxyyzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OlegON,

в чем же была проблема и как ее решил? столкнудся с тем же самым, пока не получается решить :(

спс
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Почему не работает On_NewMail
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]