Получение непрочитанной почты из веб-сервисов обмена через PHP

Как получить всю непрочитанную почту в почтовом ящике обмена пользователями с помощью PHP при использовании этого класса ?

Я решил сначала перечислить содержимое папок следующим образом:

$ews = new ExchangeWebServices("mailserver.domain.local", "user", "pass");

$request = new EWSType_FindFolderType();
$request->FolderShape = new EWSType_FolderResponseShapeType();
$request->FolderShape->BaseShape = EWSType_DefaultShapeNamesType::DEFAULT_PROPERTIES;

$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::INBOX;

$request->Traversal = new EWSType_FolderQueryTraversalType();

$result = $ews->FindFolder($request);

var_dump($result);

Только тогда я получаю эту ошибку:

Catchable fatal error: Object of class EWSType_FolderQueryTraversalType could not be converted to string

Есть ли у кого-нибудь опыт работы с этим классом, который может сказать мне, что я делаю неправильно?

Я знаю, что нужно передать строку, но кажется, что в классе всего 3 константы без каких-либо функций или других свойств.


person Sander    schedule 25.07.2011    source источник
comment
Новое расположение библиотеки php-ews: github.com/jamesiarmes/php-ews.   -  person UnderDog    schedule 09.06.2017


Ответы (1)


Я понял это, в приведенном выше примере мне пришлось использовать

$request->Traversal = EWSType_FolderQueryTraversalType::DEEP;

Поскольку у него было только 3 константы.

Но разместив это здесь, поскольку я думаю, что это может быть полезно для всех, кто хочет сделать то же самое, список всей почты в вашем почтовом ящике выглядит следующим образом:

$ews = new ExchangeWebServices("mailserver.domain.local", "user", "pass");

$request = new EWSType_FindItemType();
$request->ItemShape = new EWSType_ItemResponseShapeType();
$request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::DEFAULT_PROPERTIES;

$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::INBOX;

$request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW;

$result = $ews->FindItem($request);
person Sander    schedule 25.07.2011
comment
Можете ли вы заставить это работать в Linux или вы запускаете его в Windows? - person frak; 23.09.2011
comment
Я использовал это в Windows, не пробовал в Linux, но мне придется в будущем, если вы попробуете, сообщите мне, сработало ли это для вас. - person Sander; 26.09.2011
comment
Я получал нулевые результаты, но мой вопрос здесь: stackoverflow.com/questions/7529388/ был дан ответ, и оказалось, что учетная запись, которую я использовал, не имела достаточных привилегий - person frak; 29.09.2011