jamesiarmes / php-ews

PHP Exchange Web Services
http://jamesarmes.com/php-ews/
MIT License
567 stars 302 forks source link

DistinguishedFolderId always error ErrorInvalidIdEmpty #555

Closed brainfoolong closed 2 years ago

brainfoolong commented 5 years ago

Version: 1.0.0 PHP version: 7.3.x Microsoft Exchange version: Not sure

It tried creating events in shared calendars. If struggled because always error ErrorInvalidIdEmpty appeared. It seems that in NonEmptyArrayOfBaseFolderIdsType in combination with DistinguishedFolderId are an error that set/require a folderId, doesnt matter if DistinguishedFolderId is already set.

Here non working code

    $request = new CreateItemType();
    $request->Items = new NonEmptyArrayOfAllItemsType();
    $request->Items->CalendarItem = new CalendarItemType();
    $request->Items->CalendarItem->Subject = 'TEST';
    $request->Items->CalendarItem->Start = '2019-05-08T09:00:00+02:00';
    $request->Items->CalendarItem->End = '2019-05-08T12:00:00+02:00';
    $request->SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType::SEND_TO_NONE;

    $folderArr = new NonEmptyArrayOfBaseFolderIdsType();
    $folder = new DistinguishedFolderIdType();
    $folder->Id = DistinguishedFolderIdNameType::CALENDAR;
    $folder->Mailbox = new EmailAddressType();
    $folder->Mailbox->EmailAddress = "roland.eigelsreiter@caritas-stpoelten.at";
    $folderArr->DistinguishedFolderId = $folder;

    $request->SavedItemFolderId = $folderArr;
    $response = $ews->client->CreateItem($request);

Here working code, notice just the change from NonEmptyArrayOfBaseFolderIdsType to stdclass

$request = new CreateItemType();
$request->Items = new NonEmptyArrayOfAllItemsType();
$request->Items->CalendarItem = new CalendarItemType();
$request->Items->CalendarItem->Subject = 'TEST';
$request->Items->CalendarItem->Start = '2019-05-08T09:00:00+02:00';
$request->Items->CalendarItem->End = '2019-05-08T12:00:00+02:00';
$request->SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType::SEND_TO_NONE;

$folderArr = new stdClass();
$folder = new DistinguishedFolderIdType();
$folder->Id = DistinguishedFolderIdNameType::CALENDAR;
$folder->Mailbox = new EmailAddressType();
$folder->Mailbox->EmailAddress = "xxx@xxx.de";
$folderArr->DistinguishedFolderId = $folder;

$request->SavedItemFolderId = $folderArr;
$response = $ews->client->CreateItem($request);