Обработка всех входящих писем Outlook - VB

Узнай цену своей работы

Формулировка задачи:

Есть код который при получении письма с заголовком ЗАДАЧА обрабатывает его и отправляет в задачи Outlook. Если получено сразу два-три письма то обрабатывается только одно. Как сделать что бы обрабатывались все входящие?

Решение задачи: «Обработка всех входящих писем Outlook»

textual
Листинг программы
<font color="00AA00">' этот исполняемый код</font>
<font color="blue">Sub</font> СохранитьВложения()

<font color="blue">On</font> <font color="blue">Error</font> <font color="blue">Resume</font> <font color="blue">Next</font>
<font color="blue">Dim</font> income(<font color="darkblue"><b>1000</b></font>) <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> FolderName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> Myf(<font color="darkblue"><b>50</b></font>) <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> data <font color="blue">As</font> <font color="blue">Date</font>
<font color="blue">Dim</font> MonNum <font color="blue">As</font> <font color="blue">String</font>
msg = <font color="darkblue"><b>1</b></font>

<font color="blue">Set</font> myOlApp = CreateObject(<font color="teal">"Outlook.Application"</font>)
<font color="blue">Set</font> myNameSpace = myOlApp.GetNamespace(<font color="teal">"MAPI"</font>)


<font color="00AA00">' Тут идет проверка количества оцениваемых сообщений (бежать по всем входящим нет смысла, долго)</font>
Max = myNameSpace.GetDefaultFolder(olFolderInbox).Items.Count + <font color="darkblue"><b>1</b></font>
<font color="00AA00">' в частности здесь берется 10 последних сообщений</font>
MesBuffer = <font color="darkblue"><b>10</b></font>
<font color="blue">If</font> Max < MesBuffer <font color="blue">Then</font> MesBuffer = Max - <font color="darkblue"><b>1</b></font>
<font color="00AA00">'проверяем больше ли чем 0 сообщений</font>
<font color="blue">If</font> Max > <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
<font color="00AA00">' цикл по этим сообщениям</font>
<font color="blue">For</font> msg = Max - MesBuffer <font color="blue">To</font> Max
<font color="00AA00">' считаем количство вложений</font>
atcount = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments.Count
<font color="00AA00">' смотрим тему</font>
subj = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Subject
<font color="00AA00">' вот тут нужно установить бесплатную прогу, которая убирает уведомления на чтение адресов</font>
<font color="00AA00">' расположена http://www.mapilab.com/ru/outlook/security прога бесплатна и для коммерческого и для некоммерческого использования</font>

<font color="00AA00">' смотрим ИФО отправителя</font>
SendName = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).SenderName
<font color="00AA00">' адрес отправителя</font>
Send = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).SenderEmailAddress

<font color="00AA00">' Если сообщение имеет статус непрочтеное и вложений не равно 0</font>
<font color="blue">If</font> myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).UnRead = True <font color="blue">And</font> atcount <> <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
<font color="00AA00">' цикл по всем вложениям</font>
<font color="blue">For</font> I = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> atcount
<font color="00AA00">' наименование вложения</font>
income(msg) = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments(<font color="darkblue"><b>1</b></font>)

<font color="00AA00">' тут можно сделать проверку наименования вложения</font>
<font color="00AA00">' проверка</font>

<font color="00AA00">' задаем место хранения (можно в зависимости от наименования вложения назначить путь по условию</font>
pathOL = <font color="teal">"E:\New\"</font>
<font color="00AA00">' Наименование файла вложения Адрес + Тема + НомерСообщения + НомерВложения + НаименованиеВложения (номер сообщения от конца)</font>
MessageName = Send & subj & (Max - msg) & I & income(msg)
<font color="00AA00">' проверяем файл на существование, если он существует в цикле создаем новую версию и ещё раз проверяем</font>
N = <font color="darkblue"><b>0</b></font>
<font color="blue">Do</font> <font color="blue">While</font> Dir(pathOL & MessageName) <> <font color="teal">""</font>
            N = N + <font color="darkblue"><b>1</b></font>
            MessageName = N & Send & subj & (Max - msg) & I & income(msg)
<font color="blue">Loop</font>
<font color="00AA00">' сохраняем вложение</font>
myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments(<font color="darkblue"><b>1</b></font>).SaveAsFile pathOL & MessageName

<font color="00AA00">'End If</font>
<font color="blue">Next</font> I
<font color="00AA00">' конец файлов непрочитанных со вложениями</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="00AA00">' помечаем сообщение как прочитанное (любое)</font>
myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).UnRead = False
<font color="00AA00">'следующее вложение</font>
<font color="blue">Next</font> msg
<font color="00AA00">' очищаем память</font>
<font color="blue">Erase</font> income
<font color="00AA00">' завершаем проверку на количество сообщений больше 0</font>
<font color="blue">End</font> <font color="blue">If</font>

<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы