Что нового

[Автоматизация] Чтение данных из писем Outlook

modnik

Знающий
Сообщения
138
Репутация
13
Добрый день!


Есть Outlook и туда приходят однотипные письма. Задача состоит в том что бы вытащить из писем немного нужных цифр.


Пока смотрю в сторону Outlook UDF, но там ничего относительно чтения писем вроде бы нет

Прошу помочь разобраться!
 

pvnn

Осваивающий
Сообщения
282
Репутация
31
Создаем событие на приход всех писем.
Получаем тело письма
Ищем в теле нужные строки итд...


Код:
#include <Array.au3>
#include <OutlookEX.au3>

HotKeySet("!e", "_Exit") ; Alt-E to Exit the script
MsgBox(64, "OutlookEX UDF Example Script", "Hotkey to exit the script: 'Alt-E'!")

Global $oOApp = ObjCreate("Outlook.Application")
Global $oItems = $oOApp.GetNamespace("MAPI").GetDefaultFolder($olFolderSentMail).Items
ObjEvent($oItems, "oItems_")

While 1
 Sleep(10)
WEnd


Func oItems_ItemAdd($oOL_Item)
MsgBox(64, 'Сработал Алерт! Пришло письмо', '' &@CRLF& _
	'Тема: ' & $oOL_Item.Subject &@CRLF& _
	'Тело: ' & $oOL_Item.Body &@CRLF& _
	'От: '   & $oOL_Item.senderName)

; Ваш анализ Тела письма
$Body=$oOL_Item.Body


EndFunc ;==>oOFolder_ItemAdd


Func _Exit()
Exit
EndFunc ;==>_Exit



Добавлено: [time]1461836700[/time]




Если нужен обход каталогов, то можно так:

Код:
#include <Array.au3>
#include <OutlookEX.au3>
; Обход папки "Входящие" в Outlook
Global $oOApp = ObjCreate("Outlook.Application")
Global $oItems = $oOApp.GetNamespace("MAPI").GetDefaultFolder($olFolderInbox) ; Папка верхнего уровня "Входящие" Другие значения смотрим в OutlookExConstants.au3
$NumItems = $oItems.Items.Count ; Количество Items
$MyItems = $oItems.Items		; Все элементы в данной папке

Local $aMail[$NumItems][4]		; Массив для записи данных
For $i = 1 to $NumItems
	$aMail[$i-1][0]=$MyItems($i).SenderName		; Отправитель
	$aMail[$i-1][1]=$MyItems($i).Subject		; Тема
	$aMail[$i-1][2]=$MyItems($i).Body			; Тело
	$aMail[$i-1][3]=$MyItems($i).CreationTime	; Дата
Next
_ArraySort($aMail,1,Default,Default,3) ; Сортировка по убыванию
_ArrayDisplay($aMail)

Почитать можно еще тут:
https://support.microsoft.com/ru-ru/kb/208520

Еще вариант:
Код:
#include <Array.au3>
#include <OutlookEX.au3>
; Получить список всех сообщений из папки Входящие
Global $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)

Global $aItems = _OL_ItemFind($oOutlook, "*\Входящие", $olMail)
If @error <> 0 Then Exit MsgBox(16, "Item find", "Error searching for unread mail items. @error = " & @error & ", @extended = " & @extended)

_ArraySort($aItems,1,Default,Default,2) ; Сортировка по убыванию
_ArrayDisplay($aItems,"Список писем")
_OL_Close($oOutlook)
 
Верх