インターネットの急速な発展に伴い、スパムの問題はますます深刻になりつつあり、時間とエネルギーを浪費するだけでなく、安全上の危険を引き起こす可能性もあります。この問題を解決するために、多くの電子メールサービスプロバイダーは自動スパムフィルタリングを提供します。今日は、PHPを介してスパムを自動的に削除するためのExchangeメールボックスを開発する方法を紹介します。
Exchangeは、広く使用されているエンタープライズクラスのメールボックスサーバーであり、APIが提供するメールボックスと通信できます。人気のあるWeb開発言語として、PHPはExchangeのWebサービスAPIと対話できます。コーディングを開始する前に、開発環境にPHPが正しくインストールされ、利用可能なExchangeアカウントがあることを確認してください。
ExchangeはWebサービスインターフェイスを提供し、PHPのSOAP拡張機能を使用して接続できます。 SoapClientインスタンスを作成し、ExchangeのWSDLファイルアドレスを指定する必要があります。この例を使用すると、Exchangeと対話できます。
次に、スパムを削除するコードを書きます。まず、ExchangeのFindITEM操作を使用して、特定のフォルダー内のメッセージを検索し、一部のフィルタリング基準に基づいてスパムをフィルターします。たとえば、件名、ロゴ、および電子メールのその他の情報に基づいてフィルタリングできます。スパムをフィルタリングした後、削除操作を使用して削除できます。
Exchangeサーバーに接続してスパムを削除する方法を示すコード例を次に示します。
// 作成するSoapClient例,に接続しますExchangeサーバ
$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");
// 作成する过滤器
$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";
// 作成するFindItem聞く
$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;
// 送信FindItem聞く
$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))
));
}
}
上記のコードを関数にカプセル化して、必要に応じて通話を容易にすることができます。たとえば、この関数を時限タスクを介して定期的に実行して、スパムを自動的に削除できます。
PHPを介してExchangeメールボックスによってスパムを自動的に削除する機能を開発することは複雑ではありません。 Exchange Serverに接続し、FindItemアクションを使用してスパムをフィルターし、deleteItemアクションを使用して削除するだけです。ニーズに応じてフィルタリング条件を設定し、定期的な呼び出しのためにコードを関数にカプセル化できます。このチュートリアルがあなたに役立つことを願っています。スパムクリーニング機能のスムーズな実装をお祈りします!