CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

19.11.2006, 18:48:23
|
Anfänger
|
|
Registriert seit: Nov 2006
Beiträge: 9
|
|
IMAP Webmailer - Anhänge von Mails anzeigen und speichern
Hallo.
Ich schreibe gerade an einem PHP-Backend für einen Flash-Webmailer.
Um die Mail zu strukturieren und die Anhänge auszulesen habe ich
etwas gegoogelt und diesen Teil einfach in mein Skript kopiert.
Das mit der Strukturierung funktioniert auch ganz gut, allerdings
kann ich die Anhänge nicht auslesen.
Kann mir da bitte jemand helfen?
Hier der Code (relevant ist eigentlich nur der Teil in der Mitte):
PHP-Code:
<?php
include("dbconnect.php");
$abfrage = "SELECT * FROM mail_konfiguration WHERE id='1'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $passwort = $row->passwort; $username = $row->username; $mailserver = $row->mailserver; }
$port = "110";
//Verbindung zum Postfach aufbauen $mailbox = imap_open("{".$mailserver."/pop3:".$port."}INBOX",$username,$passwort);
//Überprüfung if($mailbox != false) { $var_verbindung = "1"; echo "&var_verbindung=".$var_verbindung;
// Posteingang überprüfen $check=imap_check($mailbox);
// Anzahl vorhandener Emails im Postfach $count_msg=$check->Nmsgs;
// Anzahl neuer Emails im Postfach $count_new_msg=$check->Recent;
// Emails auslesen for ($i=1; $i<=imap_num_msg($mailbox); $i++) {
// Header erfassen $mail_header=imap_header($mailbox, $i);
// Datum erfassen $mail_date=$mail_header->Date;
// Mail-ID erfassen $mail_id=$mail_header->message_id;
// Empfänger erfassen $mail_to=$mail_header->toaddress;
// Absendername erfassen $mail_from_name=$mail_header->from [0]->personal;
// Absender-eMail-Adresse erfassen $mail_from_address=$mail_header->from [0]->mailbox."@".$mail_header->from [0]->host;
// Kopieempfänger erfassen $mail_copy_to=$mail_header->cc[0] ->mailbox."@".$mail_header->cc[0] ->host; if ($mail_copy_to = "@") { $mail_copy_to = ""; }
// Antwortempfänger erfassen $mail_answer_to=$mail_header->reply_to;
// Betreff erfassen $mail_subject=$mail_header->subject;
// Nachricht erfassen $mail_body = imap_body($mailbox,$i);
// Im Folgenden wird die Struktur der Mail ausgelesen und unnötiges HTML enfernt $struct = imap_fetchstructure($mailbox, $i); $parts = $struct->parts; $x = 0;
if (!$parts) { /* Simple message, only 1 piece */ $attachment = array(); /* No attachments */ $content = imap_body($mailbox, $i); } else { /* Complicated message, multiple parts */ $endwhile = false; $stack = array(); /* Stack while parsing message */ $content = ""; /* Content of message */ $attachment = array(); /* Attachments */ while (!$endwhile) { if (!$parts[$x]) { if (count($stack) > 0) { $parts = $stack[count($stack)-1]["p"]; $x = $stack[count($stack)-1]["i"] + 1; array_pop($stack); } else { $endwhile = true; } } if (!$endwhile) { /* Create message part first (example '1.2.3') */ $partstring = ""; foreach ($stack as $s) { $partstring .= ($s["i"]+1) . "."; } $partstring .= ($x+1); if (strtoupper($parts[$x]->disposition) == "ATTACHMENT") { /* Attachment */ $attachment[] = array("filename" => $parts[$x]->parameters[0]->value, "filedata" => imap_fetchbody($mailbox, $i, $partstring)); } elseif (strtoupper($parts[$x]->subtype) == "PLAIN") { /* Message */ $content .= imap_fetchbody($mailbox, $i, $partstring); } }
if ($parts[$x]->parts) { $stack[] = array("p" => $parts, "i" => $x); $parts = $parts[$x]->parts; $x = 0; } else { $x++; } } /* while */ } /* complicated message */
echo "<b>Attachment=".$attachment["filename"]."</b>";
$datum_tag = substr($mail_date, 0, 3); $datum_monat = substr($mail_date, -23, 3); $tag = substr($mail_date, 5, 2); $jahr = substr($mail_date, -19, 4); $uhr = substr($mail_date, -14, 8);
$wochentag = array( "Mon" => "Montag", "Tue" => "Dienstag", "Wed" => "Mittwoch", "Thu" => "Donnerstag", "Fri" => "Friday", "Sat" => "Samstag", "Sun" => "Sonntag" );
$wochentag_sql = $wochentag[$datum_tag];
$monat = array( "Jan" => "Jan.", "Feb" => "Feb.", "Mar" => "März", "Apr" => "April", "May" => "Mai", "June" => "Juni", "July" => "Juli", "Aug" => "Aug.", "Sep" => "Sep.", "Oct" => "Okt.", "Nov" => "Nov.", "Dec" => "Dez." );
$monat_u = $monat[$datum_monat];
$monat_sql = $monat[$datum_monat];
$datum_tag_u = date("d",mktime(0,$tag));
$datum_sql = $datum_tag_u.". ".$monat_u." ".$jahr." - ".$uhr." Uhr";; echo $datum_sql;
// Daten in db speichern $eintrag = "INSERT INTO mails (absender_name, absender_mail, betreff, inhalt, datum_datum, datum_tag, empfaenger, empfaenger_copy, ordner) VALUES ('$mail_from_name', '$mail_from_address', '$mail_subject', '$content', '$datum_sql', '$wochentag_sql', '$mail_to', '$mail_copy_to', '1')"; $eintragen = mysql_query($eintrag);
//E-Mail vom Server löschen imap_delete($mailbox, $i);
} imap_expunge($mailbox); imap_close($mailbox); } else { $var_verbindung = "0"; echo "Keine Verbindung zum Mail-Postfach!"; echo "&var_verbindung=" . $var_verbindung; }
include ("mails_auslesen.php");
?>
Geändert von Desperado_11 (19.11.2006 um 18:49:16 Uhr)
|

19.11.2006, 20:11:20
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: IMAP Webmailer - Anhänge von Mails anzeigen und speichern
Zitat:
Zitat von Desperado_11
Das mit der Strukturierung funktioniert auch ganz gut, allerdings
kann ich die Anhänge nicht auslesen.
|
Und das soll was genau heißen?
|

19.11.2006, 20:50:17
|
Anfänger
|
|
Registriert seit: Nov 2006
Beiträge: 9
|
|
AW: IMAP Webmailer - Anhänge von Mails anzeigen und speichern
Das heißt, dass ich kein unnötiges HTML angezeigt bekomm.
Allerdings kann ich die Anhänge halt nicht anzeigen bzw. speichern.
|

20.11.2006, 15:33:39
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: IMAP Webmailer - Anhänge von Mails anzeigen und speichern
Ist $struct->parts denn ein Array mit den gewünschten Objekten?
|

23.11.2008, 19:07:43
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 50
Beiträge: 1
|
|
AW: IMAP Webmailer - Anhänge von Mails anzeigen und speichern
So gehts (Der Mittel Teil -> Files auslesen und speichern):
PHP-Code:
if(!$parts){
$attachment = array();
$content = imap_body($mbox, $i);
}else{
$endwhile = false;
$stack = array();
$content = "";
$attachment = array();
while(!$endwhile){
if(!$parts[$x]){
if(count($stack) > 0){
$parts = $stack[count($stack)-1]["p"];
$x = $stack[count($stack)-1]["i"] + 1;
array_pop($stack);
}else{
$endwhile = true;
}
}
if(!$endwhile){
$partstring = "";
foreach($stack as $s){
$partstring .= ($s["i"]+1) . ".";
}
$partstring .= ($x+1);
if (strtoupper($parts[$x]->disposition) == "ATTACHMENT") {
$y++;
$attachment[$key] = array("filename" => $parts[$x]->parameters[0]->value, "filedata" => imap_fetchbody($mbox, $i, $partstring));
$text = imap_base64($attachment[$key]["filedata"]);
$open = fopen("../email_anhang/".$sql_id."_".$attachment[$key]["filename"], "w");
fwrite($open, $text);
fclose($open);
}elseif(strtoupper($parts[$x]->subtype) == "PLAIN") {
$content .= imap_fetchbody($mbox, $i, $partstring);
}
}
if($parts[$x]->parts){
$stack[] = array("p" => $parts, "i" => $x);
$parts = $parts[$x]->parts;
$x = 0;
}else{
$x++;
}
}
}
|

02.09.2010, 09:47:02
|
Anfänger
|
|
Registriert seit: Sep 2010
Alter: 33
Beiträge: 1
|
|
AW: IMAP Webmailer - Anhänge von Mails anzeigen und speichern
Hallo,
vielen Dank für das Beispiel, es hat mir sehr geholfen nur habe ich leider noch einen Problem.
Es werden leider keine eingebetteten Grafiken angezeigt hat dafür vielleicht jemand eine Lösung?
vielen Dank im Voraus
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:19:35 Uhr.
|