ich habe ein pop3 script welches aber nicht die anhänge lesen kann.
wie kann ich denn anhänge von einer email trennen mittels php script?
Karsten
hier das script was ich mir mal irgendwo gezogen habe; wenn man das so erweitern könnte das die email attachments ausgelesen und abgelegt werden, dann wäre es perfekt!
<?php print "<body style="font-family: Arial; margin-left: 10px; margin-top: 10px" link="#3300FF" vlink="#336600">"; class pop3 {
var $strStatus; var $pop3; var $arrMessages; var $arrMessage;
function pop3() { $this->strStatus = array(); $this->pop3 = 0; $arrMessages = $arrMessage = ''; }
# Verbindung öffnen function open($strServer, $intPort = 110) { $this->pop3 = fsockopen($strServer, $intPort); if (!is_resource($this->pop3)) return FALSE; $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# User anmelden function user($strUser) { fputs($this->pop3, "USER $strUser\r\n"); $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# Passwort übertragen function pass($strPass) { fputs($this->pop3, "PASS $strPass\r\n"); $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# Nachrichten auslesen function mess() { fputs($this->pop3, "LIST\r\n"); $line = fgets($this->pop3, 1024); if($this->getresult($line)) { unset($this->arrMessages); while(substr($line=fgets($this->pop3, 1024),0,1) != '.') { $this->arrMessages[] = $line; } return TRUE; } else { return FALSE; } }
# Informationen einer Nachricht auslesen function retr($strMessage) { list($intMessage) = explode(' ',$strMessage); fputs($this->pop3, "RETR $intMessage\r\n"); $line = fgets($this->pop3, 1024); if($this->getresult($line)) { unset($this->arrMessages); while(substr($line=fgets($this->pop3, 1024),0,1) != '.') { $this->arrMessages[] = $line; } return TRUE; } else { return FALSE; } }
# Ausgewählte Nachricht löschen function dele($intMessage) { list($intMessage) = explode(' ',$intMessage); //echo "<br>DELE $intMessage<br>"; fputs($this->pop3, "DELE $intMessage\r\n"); $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# Zum Löschen markierte Nachricht wieder herstellen function reset() { fputs($this->pop3, "RSET\r\n"); $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# Serververbindung trennen function quit() { fputs($this->pop3, "QUIT\r\n"); $line = fgets($this->pop3, 1024); return $this->getresult($line); }
# Serverantwort auswerten function getresult($line) { $this->strStatus = substr($line, 0, 1024); if (substr($this->strStatus, 0, 1) != '+') { return FALSE; } else { return TRUE; } }
# Serverantwort anzeigen function showresult() { //echo "<code style="color:red;">$this->strStatus</code>"; }
} /* end class */
Seitenbeginn
$mybox = new pop3; $popserver = 'pop3.web.de';
Verbindungsdaten
$address = ''; $username = 'username'; $password = 'passwort';
Variablen initialisieren
$error = FALSE; $deleted = FALSE; $self = $PHP_SELF; $content = ""; $noMoreHeaders = 0; $contentIsSet = 0;
Pulldown-Menü
echo (" <table cellpadding="5" cellspacing="0" border="0" style="width:100%;"> <tr> <td> ");
Verbindung zum POP3-Server aufbauen
while(TRUE) {
if (!$mybox->open($popserver)) { echo "[FEHLER] Verbindung nicht möglich<br>\n"; $mybox->showresult(); $error = TRUE; break; } else { //echo "erfolgreich<br>\n"; $mybox->showresult(); //echo "<br>\n"; } //echo 'Benutzername: '; if (!$mybox->user($username)) { echo "[FEHLER] Benutzername nicht erkannt!<br>\n"; $mybox->showresult(); $error = TRUE; break; } else { //echo "<b>$username</b> anmelden...<br>\n"; $mybox->showresult(); //echo "<br>\n"; } //echo 'Kennwort: '; if (!$mybox->pass($password)) { echo "[FEHLER] Kennwort falsch!<br>\n"; $mybox->showresult(); $error = TRUE; break; } else { //echo "akzeptiert<br>\n"; $mybox->showresult(); //echo "<br>\n"; } echo 'Deine Mailbox hat: '; if (!$mybox->mess()) { echo "[FEHLER] Abruf fehlgeschlagen!<br>\n"; $error = TRUE; break; } else { echo '<b>'.count($mybox->arrMessages)."</b> Nachrichten<br>\n"; $mybox->showresult(); //echo "<br>\n"; } break; } /* end while */
Aktionen auswerten und durchführen
if($delet == 'ok'){ //$nummer = @$_POST["nummer"]; $mybox->dele($nummer); //$mybox->showresult(); echo"<br>"; $mybox->quit(); //$mybox->showresult(); echo"<br>"; $deleted = TRUE; // Anzeigen der Mailbox verhindern zwecks Reload }
echo "<hr size="2">";
Wenn Kontakt zum Server und Verbindung okay...
if(!$error and is_array($mybox->arrMessages) and !$deleted) {
# Auslesen der Mail-Anfrage... foreach($mybox->arrMessages as $strMessage) { $n_count_arr = explode(' ',$strMessage); $n_count = $n_count_arr[0];
# Wenn Mail vorhanden... if ($mybox->retr($strMessage)) {
foreach($mybox->arrMessages as $strData) {
$arrType = explode(":",$strData);
if($arrType[0]=="Content-Type") $contentIsSet = 1; if(ereg("From:",$strData)) $from = $strData; if(ereg("Return-Path:",$strData)) { $reply = str_replace("<","",$strData); $reply = str_replace(">","",$reply); } if(ereg("Reply-To:",$strData)) $reply = $strData; if(ereg("Date:",$strData)) $date = $strData; if(ereg("Subject:",$strData)) $subject = $strData;
if(ereg("Content-Type:",$strData)) { $type = $strData; if(ereg("text/plain",$type)||ereg("text/richtext",$type)) $typeOk = 1; else $typeOk = 0; }
if($strData=="\r\n") $noMoreHeaders = 1;
if($noMoreHeaders==1 && ($typeOk==1 || !isset($type) || $contentIsSet==0) && !ereg("charset",$strData) && !ereg("Content-Type",$strData) && !ereg("-=",$strData)) { $content .= $strData; $content = str_replace("\r\n","<br>",$content); }
} } else { $mybox->showresult(); }
$nto_arr = explode(' ',$reply); $nto = $nto_arr[1];
$betreff_arr = explode(' ',$subject); $betreff = $betreff_arr[1];
$von_arr = explode(' ',$from); $von = $von_arr[1];
# Ausgabe der Email echo ("</td></tr> <tr> <td style="background-color:rgb(255,178,0); color: #ffffff;"> Nachricht: $n_count <b>Betreff: $betreff</b> <a href="$self?delet=ok&adresses=$adress&nummer=$strMessage">Löschen</a> | <a href="reply.php?to=$nto">Antworten</a> </td> </tr>");
echo ("<tr><td style="border:1px solid rgb(255,178,0);"> From: $von<br> $date<br> </td></tr><tr><td style="border:1px solid rgb(255,178,0);"> $content ");
# Variablen zurücksetzen $from = ""; $reply = ""; $date = ""; $subject = ""; $type = ""; $content = ""; $noMoreHeaders = 0; $typeOk = 0; $contentIsSet = 0; echo (" </td> </tr> <tr> <td style="text-align:right;"> <br> <br> <br> "); } /* end foreach */ } else { // Wenn Mailbox nicht ausgelesen wurde... echo (" </td> </tr> <tr> <td style="text-align:center;">"); if(!$deleted) echo "Keine Nachrichten vorhanden!"; else { echo (" <h4>Nachricht gelöscht!</h4> <a href="$self?address=$address">Zurück zur Mailbox</a> "); }
} echo (" </td> </tr> </table>");
$mybox->quit(); $mybox->showresult(); ?>