Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание скриптов в Outlook

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

ova



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тут мне понадобилось написать некий скрипт для обработки входящих сообщений в Microsoft Outlook. Подскажите как это делается и с чего начать. Thanks!

Всего записей: 167 | Зарегистр. 28-11-2002 | Отправлено: 16:00 05-08-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не уверен, что получится написать скрипт. Скорее, необходимо писать свой Add-in для Outlook. Вроде как на SourceForge были какие-то проекты (типа АнтиСпам фильтры) с исходниками.

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 14:40 06-08-2003
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ova
Написать скрипт для обработки входящих сообщений - дело не трудное: vbs тебе в руки. Но вот запустить его из под самого Outlook'а у меня что-то не получилось. Здесь действительно надо что-то типа Add-in'а на Visual Basic'е делать.
 
ЗЫ: Хотя, если посмотреть в Мастер Правил, там есть какое-то "Запустить сценарий". Но что это такое - в Help'е не нашел...
 
Добавлено
ova
И еще: загляни на _http://www.cdolive.com/start.htm - там есть что почитать для начала.

----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 09:22 19-08-2003
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fill747
ova

Цитата:
Написать скрипт для обработки входящих сообщений - дело не трудное: vbs тебе в руки.  Но вот запустить его из под самого Outlook'а у меня что-то не получилось

 
Private Sub Application_NewMail()
    <bla-bla-bla>
 End Sub
должно работать...
 
И вообще советую покопаться тут http://www.slipstick.com/ - много информации об интересующей вас теме вообще и преодолению проблем связанных с Outlook security в частности...
 


----------
"Русские Доски" - сила! "Русские Доски" - класс! Кто не знает досок - тот сами догадайтесь кто

Всего записей: 4641 | Зарегистр. 30-10-2001 | Отправлено: 10:07 19-08-2003
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
naPmu3aH
Спасибо, про этот сайт я уже давно знаю.
 
ova
Я был не прав. Вот пример кода по материалам упомянутого выше сайта.
 
Код, который мониторит Inbox и все входящие письма, в заголовке которых есть слово "Test" перемещает в папку TestFolder. Папка TestFolder должна быть подпапкой Inbox'а (честно говоря, некогда было разбираться - почему )
Весь ниже приведенный код кладется в модуль ThisOutlookSession.
Обработчик ошибок отсутствует, т.е. папки должны существовать.
В Outlook XP надо поиграть с безопасностью макросов.
 
 
Option Explicit
 
Private WithEvents olInboxItems As Items
 
Private Sub Application_Startup()
    Dim objNS As NameSpace
 
    Set objNS = Application.GetNamespace("MAPI")
    Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items
    Set objNS = Nothing
End Sub
 
Private Sub Application_Quit()
    Set olInboxItems = Nothing
End Sub
 
 
Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
    Dim objNS As NameSpace
    Dim objInbox As MAPIFolder
    Dim objTestFolder As MAPIFolder
 
    If Item.Class = olMail Then
        If InStr(Item.Subject, "Test") > 0 Then
            Set objNS = Application.GetNamespace("MAPI")
            Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
            Set objTestFolder = objInbox.Folders("TestFolder")
            If Not objTestFolder Is Nothing Then
                Item.Move objTestFolder
            End If
        End If
    End If
 
    Set objTestFolder = Nothing
    Set objInbox = Nothing
    Set objNS = Nothing
End Sub


----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 14:39 19-08-2003
uken666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если можно, вопрос в догонку.
Я сделал похожее с уведомлением, но конвертик в трее (в Оутлук 2003) не уходит, хотья и делаю письмо прочтенным.
никто не знает, как до него программно добратся?

Всего записей: 2 | Зарегистр. 10-06-2004 | Отправлено: 18:05 23-11-2005
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
uken666

Цитата:
хотья и делаю письмо прочтенным

Еще бы примерно посмотреть, как ты это делаешь?..

----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 19:34 23-11-2005
volsk



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите со скриптом. Сам в VBA пока плохо разбираюсь, другое учил.
 
Задача. В outlook приходит письмо примерно следующего содержания:
 
------------------------------------------------
ОТ: MP64-1Alarm@SMPAlarm [MP64-1Alarm@SMPAlarm]
 
------------------------------------------------
текст письма
 
Дата:    11.03.2007
Время:   20:59:06
Модуль:  1
Ошибка:  Обнаружен поток 2 в модуле 3
Код ошибки: 909, категория ошибки: 1
 
------------------------------------------------
 
Задача: на основе отправителя "MP64-1Alarm@SMPAlarm" и чисел строки Ошибка: 2 и 3 составить другое письмо, где комбинаця 2 и 3 будут заменены словами, соответствующие этим числам и отправителю
 
числа хранить можно.. ну где проще для работы.. хоть в *.txt, лучше конечно в *.xls но необязательно.
 
вид допустим такой
 
от MP64-1Alarm@SMPAlarm
поток             модуль   обозначение
1                   1             слово_для_1_1
1                   2             слово_для_1_2
1                   3             слово_для_1_3
2                   1             слово_для_2_1
2                   2             слово_для_2_2
2                   3             слово_для_2_3
3                   1             слово_для_3_1
3                   2             слово_для_3_2
4                   1             слово_для_4_1
 
от MP64-2Alarm@SMPAlarm
поток             модуль   обозначение
1                   1             слово_для_1_1
1                   2             слово_для_1_2
1                   3             слово_для_1_3
...
 
Как результат должны получить письмо со строкой слово_для_3_2 и отправить его списку получателей дальше.
 
 
Было бы отлично, если кто-нибудь помог с примерным кодом, хоть что и как делать. Или с инфой, где это почитать. Сам уже долго вожусь, а результата мало.
 
 

Всего записей: 9 | Зарегистр. 05-05-2006 | Отправлено: 22:17 11-03-2007
volsk



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это же просто, но я совсем не знаю синтаксиса VBS
Набросайте хоть примерные команды плз.

Всего записей: 9 | Зарегистр. 05-05-2006 | Отправлено: 17:46 13-03-2007
dad1969

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть два вопроса по макросам для Outlook (у меня 2003):
1. Написал макрос для сохранения вложений из выделенных писем в заданную папку. Но! Среди прогнанных писем попались такие в которых в теле есть рисунки, и они тоже считаются вложениями, хотя в outlooke как вложения и не отображаются. В большинстве случаев их можно отфильтровать по Attachments.Item(i).Position. Однако иногда и у них занчение параметра равно 0 (как и у действительно вложений) и тогда отделить их от вложений не получается. Но сам outlook как-то понимает что это не вложения. Есть ли надежный способ чтобы выделить действительно вложения для сохранения? Мой код:
Код:
Const DefFolder = "C:\"
 
Sub SaveAttachments()
    Dim objApp As Outlook.Application
    Dim objItem As Object
    Dim objSelection As Outlook.Selection
    Dim objMail As MailItem
    Dim AttFolder As String
     
    Set objApp = CreateObject("Outlook.Application")
    Set objSelection = objApp.ActiveExplorer.Selection
     
    AttFolder = Trim(InputBox("Задайте имя папки", "Сохранение вложений"))
     
    If AttFolder <> "" Then AttFolder = AttFolder + "\"
     
    If MsgBox("Сохранить все вложения в папку " + DefFolder + AttFolder + "? Все файлы с такими именами в этой папке будут перезаписаны!", vbQuestion + vbOKCancel) = vbOK Then
        Set fs = CreateObject("Scripting.FileSystemObject")
        If Not fs.folderexists(DefFolder + AttFolder) Then
            fs.createfolder (DefFolder + AttFolder)
        End If
         
        For Each objItem In objSelection
            If objItem.Class = olMail Then
                Set objMail = objItem
                For i = 1 To objMail.Attachments.Count
                    If objMail.Attachments.Item(i).Position = 0 Then
                        objMail.Attachments.Item(i).SaveAsFile DefFolder + AttFolder + objMail.Attachments.Item(i).DisplayName
                    End If
                Next
            End If
        Next
    End If
End Sub

2. Как сделать чтобы при перемещении макросом писем из одной папки в другую время и дата получения письма не менялись на текущие? В моем случае происходит именно так. Мой код:
Код:
Private Sub NewItems_ItemAdd(ByVal Item As Object)
    Dim NewFolder As Outlook.MAPIFolder
    Dim NewName As String
    Dim NewMail As MailItem
    Dim idx As Integer
    ' Check to make sure it is an Outlook mail message, otherwise
    ' subsequent code will probably fail depending on what type
    ' of item it is.
    If TypeName(Item) = "MailItem" Then
        Set NewMail = Item
        NewName = Format(NewMailTime, "yyyy-mm")
        On Error Resume Next
            MainFolder.Folders.Add NewName
        On Error GoTo 0
        For idx = 1 To MainFolder.Folders.Count
            If MainFolder.Folders.Item(idx).Name = NewName Then
                Set NewFolder = MainFolder.Folders.Item(idx)
            End If
        Next
        NewMail.Move NewFolder
    End If
End Sub
 

Всего записей: 571 | Зарегистр. 18-03-2003 | Отправлено: 16:03 16-05-2007 | Исправлено: dad1969, 12:38 17-07-2007
Biblbrox



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста текст макроса, который бы перемещал письма после прочтения из папки Входящие/Не_прочтенные во Входящие.  С Visual Basic не знаком, а сделать такую штуку очень хотелось бы. Спасибо!

Всего записей: 55 | Зарегистр. 18-05-2004 | Отправлено: 12:03 19-09-2007
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Biblbrox
Папка Входящие/Не_прочтенные является "виртуальной" папкой - т.н. "папка поиска". Точно так же, как и папки "Сегодня" и "Большие письма". Недаром у них на иконке нарисована лупа.
Таким образом, как только ты читаешь письмо и оно помечается, как "прочтенное", оно "уходит" из папки "Не прочтенное", но всё равно остаётся в папке Входящие. Т.е. макрос для перемещения не нужен.


----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 12:44 19-09-2007 | Исправлено: Fill747, 12:44 19-09-2007
Biblbrox



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fill747
В моем случае это не папка поиска, с лупой которая, а папка, в которую складываются новые письма правилом.  
Или (понимаю что не о программировании) можно ли такую папку поиска поместить в "Входящие" а не в "Папки поиска" ?

Всего записей: 55 | Зарегистр. 18-05-2004 | Отправлено: 14:31 19-09-2007
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Biblbrox

Цитата:
складываются новые письма правилом

Риторический вопрос: зачем?

Цитата:
можно ли такую папку поиска поместить в "Входящие"

ИМХО, нет. Т.к. это, как я уже сказал, виртуальная папка.

----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 14:44 19-09-2007
BadCaT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, пол инета обошёл и ничего я не нашёл.
как можно с помощью VBA изменить параметры учетной записи в Office Outlook 2003?
конкретно - incoming/outgoing server

Всего записей: 20 | Зарегистр. 07-09-2004 | Отправлено: 16:25 02-11-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BadCaT
Похоже, что через VBA это нельзя сделать. Посмотри
http://groups.google.com/group/microsoft.public.outlook.program_vba/browse_thread/thread/d65b39fab5c0c71c/aa580c3b84dfa6c0?hl=en&lnk=st&q=vba%2Boutlook%2Bchange%2Bsmtp#aa580c3b84dfa6c0
http://www.dimastr.com/redemption/profiles.htm
http://groups.google.com/group/microsoft.public.office.developer.outlook.vba/browse_thread/thread/59c34ebc103a3aee/9f01c7bd18ecc504?hl=en&lnk=st&q=vba%2Boutlook%2Bchange%2Bsmtp#9f01c7bd18ecc504

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:36 03-11-2007
dredd00

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите нужен скрипт.  
Нужен простейший до безобразия скрипт для 2003 аутлука.
При Запуске или завершении работы аутлука, необходимо чтобы скрипт проверял сообщения в папке нежелательная почта, и всех отправителей писем добавлял в спамлист, если их еще там не было. Или другими словами. (как я это делаю в ручную)
ПКМ на письме. в меню выбираю: Нежелательная почта -> добавить отправителя в список заблокированных отправителей. Помогите плиз сам не рублю

Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 15:23 26-11-2007
Fill747



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dredd00
Э... Что-то я не совсем тебя понял... Дело в том, что в папку Нежелательная почта попадают письма от тех отправителей, которые уже есть в спам-листе. Зачем их туда ещё раз добавлять?

----------
Я бы сделал лучше, но мне помогали.

Всего записей: 1147 | Зарегистр. 03-02-2003 | Отправлено: 09:14 27-11-2007
dredd00

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну пусть будет не папка "нежелательная почта" а какая нибудь другая например "входящий спам" просто правило у меня так настроено что все сообшения отправленные не мне идут в нежелательную почту, перемещаться то они туда перемещаются, а вот в блоклист не добавляются

Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 16:36 27-11-2007
dredd00

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PS Я даже нашел скрипт, который может проверить сообщения одно за другим в каждой папке, но как его сверить с мылами из блоклиста хз вот код скрипта
Скрпт проверяет каждое сообщение в папке тест и если оно от сомвана то красит его в желтый

Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 07:01 29-11-2007 | Исправлено: dredd00, 07:03 29-11-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание скриптов в Outlook


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru