Quantcast
Channel: Exchange Server Development forum
Viewing all articles
Browse latest Browse all 7132

[E2013] [EWS] [PHP] [Windows] : Creating navigation shortcut pointing to a calendar, getting draft message instead.

$
0
0

Hi,

A couple days ago we asked about how to create a shared calendar without the need to accept a sharing request email. We got this answer: http://social.msdn.microsoft.com/Forums/exchange/en-US/eb49d42d-f961-42f6-8732-4bc3d0987b18/sharing-a-calendar-using-ews-and-phpews-without-sending-share-invitation

We read the documentation and started trying the implementation to make it work. So far this is the properties we set for our request to the method CreateItem

//PidTagMessageClass 
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x001A";
$sType->PropertyType = EWSType_MapiPropertyTypeType::STRING;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = "IPM.Microsoft.WunderBar.Link";
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagNormalizedSubject  
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x0E1D";
$sType->PropertyType = EWSType_MapiPropertyTypeType::STRING;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = "Meetings";
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkSaveStamp   
//$sType = new EWSType_PathToExtendedFieldType();
//$sType->PropertyTag = "0x0E1D";
//$sType->PropertyType = EWSType_MapiPropertyTypeType::STRING;
//
//$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
//$objExtendedPropertyType->ExtendedFieldURI = $sType;
//$objExtendedPropertyType->Value = "Meetings";
//$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkType
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x6849";
$sType->PropertyType = EWSType_MapiPropertyTypeType::INTEGER;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = 2;
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkFlags
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x684A";
$sType->PropertyType = EWSType_MapiPropertyTypeType::INTEGER;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = 1024;
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkOrdinal 
//$sType = new EWSType_PathToExtendedFieldType();
//$sType->PropertyTag = "0x684B";
//$sType->PropertyType = EWSType_MapiPropertyTypeType::BINARY;
//
//$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
//$objExtendedPropertyType->ExtendedFieldURI = $sType;
//$objExtendedPropertyType->Value = 1024;
//$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkEntryId 
$sType = new EWSType_PathToExtendedFieldType();
//$sType->PropertyTag = "0x0FFF";
$sType->PropertyTag = "0x684C";
$sType->PropertyType = EWSType_MapiPropertyTypeType::BINARY;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = $sEntryID;
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkRecordKey  
$sType = new EWSType_PathToExtendedFieldType();
//$sType->PropertyTag = "0x0FF9";
$sType->PropertyTag = "0x684D";
$sType->PropertyType = EWSType_MapiPropertyTypeType::BINARY;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = $sRecordID;
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkStoreEntryId  
$sType = new EWSType_PathToExtendedFieldType();
//$sType->PropertyTag = "0x0FFB";
$sType->PropertyTag = "0x684E";
$sType->PropertyType = EWSType_MapiPropertyTypeType::BINARY;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = $sStoreID;
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkFolderType
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x684F";
$sType->PropertyType = EWSType_MapiPropertyTypeType::CLSID;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
//$objExtendedPropertyType->Value = '{0x02780600, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}';
$objExtendedPropertyType->Value = '0006F063-0000-0000-C000-000000000046';
$a_sExtendedProperties[] = $objExtendedPropertyType;

//PidTagWlinkSection
$sType = new EWSType_PathToExtendedFieldType();
$sType->PropertyTag = "0x6852";
$sType->PropertyType = EWSType_MapiPropertyTypeType::INTEGER;

$objExtendedPropertyType = new EWSType_ExtendedPropertyType();
$objExtendedPropertyType->ExtendedFieldURI = $sType;
$objExtendedPropertyType->Value = '3';
$a_sExtendedProperties[] = $objExtendedPropertyType;

$request = new EWSType_CreateItemType();
$request->Items = new EWSType_CreateItemType();
$request->Items->Item = new EWSType_ItemType();
//$request->Items->Item->ItemClass = "IPM.Microsoft.WunderBar.Link";
//$request->Items->Item->Subject = "SharedCalendar";
$request->Items->Item->ExtendedProperty = $a_sExtendedProperties;

$request->ParentFolderId = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderId->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderId->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::CALENDAR;
$request->ParentFolderId->DistinguishedFolderId->Mailbox = new EWSType_MailboxData();
$request->ParentFolderId->DistinguishedFolderId->Mailbox->EmailAddress = 'user@domain.ca';
$request->ParentFolderId->DistinguishedFolderId->Mailbox->RoutingType  = 'SMTP';


$response = $ews->CreateItem($request);

We use FindItem with extended properties to fill the value
$sEntryID = 0x0FFF
$sStoreID = 0x0FFB
$sRecordID = 0x0FF9

When we run this script, we are getting a draft message instead of a navigation shortcut.

We tried writing the $sEntryID, $sStoreID, $sRecordID at the same property tag as the one we got them from but we get an error 503 from the server.

We think we are near the final answer but there is a gap we can't make it work. If anyone has an answer to fill that gap we will greatly appreciate it.

Thanks and have a nice day.


Viewing all articles
Browse latest Browse all 7132

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>