$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操作删除每一封垃圾邮件。