I want to get the mail subject and body of only unread mails of my inbox.
- I want to read one unread mail at a time and mark it as read afterwards.
- I need the subject, from address and mail body.
The below code shows gives me the mail IDs of all unread mails.
require_once ('../mail3/php-ews-master/ExchangeWebServices.php');
require_once ('../mail3/php-ews-master/EWS_Exception.php');
require_once ('../mail3/php-ews-master/EWSType.php');
require_once ('../mail3/php-ews-master/NTLMSoapClient.php');
function __autoload($class_name)
{
// Start from the base path and determine the location from the class name,
$base_path = '../mail3/php-ews-master';
$include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
return (file_exists($include_file) ? require_once $include_file : false);
}
$ews = new ExchangeWebServices("servername", "username", "password",ExchangeWebServices::VERSION_2010);
$request = new EWSType_FindItemType();
$itemProperties = new EWSType_ItemResponseShapeType();
$itemProperties->BaseShape = EWSType_DefaultShapeNamesType::ID_ONLY;
$itemProperties->BodyType = EWSType_BodyTypeResponseType::BEST;
$request->ItemShape = $itemProperties;
$fieldType = new EWSType_PathToUnindexedFieldType();
$fieldType->FieldURI = 'message:IsRead';
$constant = new EWSType_FieldURIOrConstantType();
$constant->Constant = new EWSType_ConstantValueType();
$constant->Constant->Value = "0";
$IsEqTo = new EWSType_IsEqualToType();
$IsEqTo->FieldURIOrConstant = $constant;
$IsEqTo->Path = $fieldType;
$request->Restriction = new EWSType_RestrictionType();
$request->Restriction->IsEqualTo = new EWSType_IsEqualToType();
$request->Restriction->IsEqualTo->FieldURI = $fieldType;
$request->Restriction->IsEqualTo->FieldURIOrConstant = $constant;
$request->IndexedPageItemView = new EWSType_IndexedPageViewType();
$request->IndexedPageItemView->BasePoint = 'Beginning';
$request->IndexedPageItemView->Offset = 0;
$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::INBOX;
$request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW;
$result = new EWSType_FindItemResponseMessageType();
$result = $ews->FindItem($request);
echo '<pre>';
print_r($result);
After getting it how can I mark the mail as read?
stdClass Object
(
[ResponseMessages] => stdClass Object
(
[FindItemResponseMessage] => stdClass Object
(
[ResponseCode] => NoError
[ResponseClass] => Success
[RootFolder] => stdClass Object
(
[Items] => stdClass Object
(
[Message] => Array
(
[0] => stdClass Object
(
[ItemId] => stdClass Object
(
[Id] => AAMkADM1NjQ4ZjU0LWI3OWYtNGZiMC1iYTgzLTU4N2E1MGMwYWNkMQBGAAAAAADANtAZyWYTTKe/pt+BZ+SXBwD+fIgCJQITS5O3LAEwY6+oAAAANbjBAAB51OTN2pqDQbTnOkGjBC0FAAGN2YkTAAA=
[ChangeKey] => CQAAABYAAAD+fIgCJQITS5O3LAEwY6+oAAC4WS4O
)
)
[1] => stdClass Object
(
[ItemId] => stdClass Object
(
[Id] => AAMkADM1NjQ4ZjU0LWI3OWYtNGZiMC1iYTgzLTU4N2E1MGMwYWNkMQBGAAAAAADANtAZyWYTTKe/pt+BZ+SXBwD+fIgCJQITS5O3LAEwY6+oAAAANbjBAAB51OTN2pqDQbTnOkGjBC0FAAGN2YkSAAA=
[ChangeKey] => CQAAABYAAAD+fIgCJQITS5O3LAEwY6+oAAC4WS35
)
)
)
)
[IndexedPagingOffset] => 2
[IncludesLastItemInRange] => 1
[TotalItemsInView] => 2
)
)
)
)