$soapClient = new SoapClient("http://exchangeserver/ews/exchange.asmx?WSDL"); $soapClient->__setSoapHeaders(array(new SoapHeader("http://schemas.microsoft.com/exchange/services/2006/messages", "RequestServerVersion", array("Version" => "Exchange2007_SP1")))); $soapClient->__setUsername("username"); $soapClient->__setPassword("password");
這段代碼將建立與Exchange服務器的連接,並設置請求的服務器版本、用戶名和密碼。
$filter = new stdClass(); $filter->FieldURI = new stdClass(); $filter->FieldURI->FieldURI = "item:Subject"; $filter->Contains = new stdClass(); $filter->Contains->Constant = new stdClass(); $filter->Contains->Constant->Value = "垃圾郵件"; $filter->ContainmentComparison = "Exact";
這段代碼通過郵件主題進行過濾,篩選出包含“垃圾郵件”字樣的郵件。
$request = new stdClass(); $request->Traversal = "Shallow"; $request->ItemShape = new stdClass(); $request->ItemShape->BaseShape = "AllProperties"; $request->IndexedPageItemView = new stdClass(); $request->IndexedPageItemView->BasePoint = "Beginning"; $request->IndexedPageItemView->Offset = 0; $request->IndexedPageItemView->MaxEntriesReturned = 100; $request->ParentFolderIds = new stdClass(); $request->ParentFolderIds->DistinguishedFolderId = new stdClass(); $request->ParentFolderIds->DistinguishedFolderId->Id = "inbox"; $request->Restriction = $filter; $response = $soapClient->__soapCall("FindItem", array($request));
這段代碼會返回符合條件的郵件列表,其中包含所有包含“垃圾郵件”字樣的郵件。
if ($response && $response->ResponseMessages->FindItemResponseMessage && $response->ResponseMessages->FindItemResponseMessage->RootFolder && $response->ResponseMessages->FindItemResponseMessage->RootFolder->Items) { $items = $response->ResponseMessages->FindItemResponseMessage->RootFolder->Items->Message; foreach ($items as $item) { $itemId = $item->ItemId->Id; $soapClient->DeleteItem(array("DeleteType" => "HardDelete", "ItemIds" => array("ItemId" => array("Id" => $itemId)))); } }
通過上述代碼,我們遍歷郵件列表並使用DeleteItem操作刪除每一封垃圾郵件。