Leggere un server Exchange con PHP

ciao.

In rete ho trovato questo script che consente di leggere dentro la propria casella di posta elettronica, permette di leggere tutti gli header:

<?php

// Modify the paths to these class files as needed.
require_once("class_http.php");
require_once("class_xml.php");

// Change these values for your Exchange Server.
$exchange_server = "http://NameOfYourExchangeServer";
$exchange_username = "YourExchangeUsername";
$exchange_password = "YourExchangePassword";

// We use Troy's http class object to send the XML-formatted WebDAV request
// to the Exchange Server and to receive the response from the Exchange Server.
// The response is also XML-formatted.
$h = new http();
$h->headers["Content-Type"] = 'text/xml; charset="UTF-8"';
$h->headers["Depth"] = "0";
$h->headers["Translate"] = "f";

// Find all the email items in the inbox for a user named 'twolf'.
$h->xmlrequest = '<?xml version="1.0"?>';
$h->xmlrequest .= <<<END
<a:searchrequest xmlns:a="DAV:" xmlns:s="http://schemas.microsoft.com/exchange/security/">
   <a:sql>
       SELECT "DAV:displayname"
       ,"urn:schemas:httpmail:subject"
       FROM "$exchange_server/Exchange/twolf/inbox"
   </a:sql>
</a:searchrequest>
END;
// IMPORTANT -- The END line above must be completely left-aligned. No white-space.

// The 'fetch' method does the work of sending and receiving the request.
// NOTICE the last parameter passed--'SEARCH' in this example. That is the
// HTTP verb that you must correctly set according to the type of WebDAV request
// you are making.  The examples on this page use either 'PROPFIND' or 'SEARCH'.
if (!$h->fetch($exchange_server."/Exchange/twolf/inbox", 0, null, $exchange_username, $exchange_password, "SEARCH")) {
  echo "<h2>There is a problem with the http request!</h2>";
  echo $h->log;
  exit();
}

// The assumption now is that we've got an XML result back from the Exchange
// Server, so let's parse the XML into an object we can more easily access.
// For this task, we'll use Troy's xml class object.
$x = new xml();
if (!$x->fetch($h->body)) {
    echo "<h2>There was a problem parsing your XML!</h2>";
    echo "<pre>".$h->log."</pre><hr />\n";
    echo "<pre>".$h->header."</pre><hr />\n";
    echo "<pre>".$h->body."</pre><hr />\n";
    echo "<pre>".$x->log."</pre><hr />\n";
    exit();
}

// And finally, an example of iterating the email items to display in the
// browser. I also show you 2 methods to link to the items. One uses the href
// provided in the response which opens the folder using OWA. The other is an
// Outlook style link to open the folder in the Outlook desktop client.
echo '<table border="1">';
foreach($x->data->A_MULTISTATUS[0]->A_RESPONSE as $idx=>$item) {
    echo '<tr>'
        .'<td>'.$item->A_PROPSTAT[0]->A_PROP[0]->D_SUBJECT[0]->_text.'</td>'
        .'<td><a href="'.$item->A_HREF[0]->_text.'">Click to open via OWA</a></td>'
        .'<td><a href="Outlook:Inbox/~'.$item->A_PROPSTAT[0]->A_PROP[0]->D_SUBJECT[0]->_text.'">Click to open via Outlook</a></td>'
        ."</tr>\n";
}
echo "<table>\n";

?>

ho visto che funziona perfettamente.

il sito dove ho reperito questo script è rintracciabile tramite google digitando "Microsoft Exchange PHP WebDAV Examples", il primo sito che compare è il sito dove potete trovare sia l'esempio che ho allegato sia le classi class_http.php e class_xml.php necessarie per far funzionare tutto.

Ho necessità di scaricare gli allegati (immagini, file di testo) di alcuni messaggi, qualcuno conosce come fare? Come si può entrare nel corpo del messaggio e scaricarne l'allegato?

Ciao

Stone  :bye:

inviato 8 anni fa
stone
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda