moin,
ich versuche über php auf outlook zuzugreifen. auslesen der mailanzahl funktioniert auch noch. sobald ich aber den inhalt der mails kommen will, bekomme ich eine fehlermeldung.
auslesen der anzahl geht mit
|
Source code
|
1
2
3
4
5
6
7
8
|
function getUnreadinOutbox() {
//get unread messages from the Outbox Folder
$oOutlook = new COM("Outlook.Application.9");
$oNs = $oOutlook->GetNamespace("MAPI");
$oFldr = $oNs->GetDefaultFolder(4);
$UnreadMessagesInFolder = $oFldr->UnReadItemCount;
return $UnreadMessagesInFolder;
}
|
inbox geht genauso, halt nur ...folder(6)
sobald ich aber auf den content der mails zugreifen will, geht das nicht mehr. ich benutze übrigens den kram, den ich mal im inet gefunden habe.
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
function getMessages($folder) {
echo"<body text=darkblue>
<br><font color=red face=verdana size=3><b>$folder</b></font>
<table width=100%>
<TR bgcolor=#EEEFFF><td><font face=verdana size=2>N:</td><td>
<font face=verdana size=2> Subject</td><TD>
<font face=verdana size=2 >Type</TD><TD><font face=verdana size=2> Date</TD></TR>";
$oOutlook = new COM("Outlook.Application");
$session= new COM("MAPI.Session");
$session->Logon(); <- ZEILE 27 !
//selecting working folder Inbox ot Outbox/
$inb=$session->$folder;
//get the total messages in Folder
$messages=$inb->Messages->Count();
//get the elements of the message object
for($i=1;$i<($messages+1);$i++)
{
$item=$inb->Messages->item($i);
//date string
$timeres=$item->TimeReceived();
$date_vb=getdate($timeres);
//date elements
$year=$date_vb['year'];
$month=$date_vb['mon'];
$day=$date_vb['mday'];
//entering the folder elements
echo "<tr bgcolor=#F0F0F0><td><font face=verdana size=2 color=darkblue>$i</td><td><font face=verdana size=2 color=darkblue>
<a href=view.php?id=$i&folder=$folder target=bottomFrame><font face=verdana size=2 color=#FF6666>$item->Subject</font></td><td><font face=verdana size=2 color=darkblue>$item->Type</td><td><font face=verdana size=1 color=darkblue>$year/$month/$day</td></font><tr>";
}
echo"</table>";
}
|
lokal funzt das alles in der entwicklungsumgebung. sobald ich das in den apache klatsche, passiert folgendes.
outlook als Dienst für Unternehmen konfiguriert liefert.
|
Source code
|
1
|
Warning: (null)(): Invoke() failed: Ausnahmefehler aufgetreten. Source: Collaboration Data Objects Description: [Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]] in l:\programme\apache group\apache\htdocs\outlook\COutLook.php on line 27
|
outlook als normalen InternetDienst konfiguriert liefert.
|
Source code
|
1
|
Warning: (null)(): Invoke() failed: Ausnahmefehler aufgetreten. Source: Collaboration Data Objects Description: [ - [(80004005)]] in l:\programme\apache group\apache\htdocs\outlook\COutLook.php on line 27
|
getestet wird die ganze geschichte mit win2k und outlook2000, sowie Apache1.3. und php 4.3.
hab ewig lange gebraucht, bis ich gemerkt habe, dass win2ksp3 das ausführen com objekten fürs inet deaktiviert. habs also mal wieder aktiviert.
vlt hat ja schon einer erfolgreich outlook per localhost ordentlich auslesen können. ist nur ne einstellungssache, denke ich mal, da die ganze geschichte in der entwicklungsumgebung lokal funzt. aber halt nicht mehr wenn ich es per inet(localhost) aufrufe.
bd
//Zeile 27 hab ich im code nochmal extra gekennzeichnet.