php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.12.2011, 10:01  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard IMAP Fetchbody Attachments

Guten Tag zusammen,

wie man vielleicht meiner History entnehmen kann, bin ich schon seit längeren daran ein Postfach ordentlich auszulesen.

Eigentlich bin ich schon ziemlich am Ende. Ich kann die E-Mails mit Text formatiert auslesen, Attachments und eingebundene Bilder werden in der Datenbank gespeichert.

Nur wenn ich sowohl Attachments als auch eingebundene Bilder in einer E-Mail habe werden die eingebunden Bilder als Text ausgegeben (Datenmüll). Das Attachment wird mir normal in die Datenbank gespeichert.

PHP-Code:
// Text auslesen
imap_fetchbody($mailbox$i1); 
PHP-Code:
// Attachments auslesen

$filetype =   $filetype = array("TEXT","MULTIPART","MESSAGE","APPLICATION","AUDIO","IMAGE","VIDEO","MODEL");  

  for(
$x=1imap_fetchbody($mailbox$i$x); $x++) {
    
$struct imap_fetchstructure($mailbox$i);
    
$parts $struct->parts;
  
    
$pic[$x]['name'] = $parts[$x-1]->parameters[0]->value;
    
$pic[$x]['type'] = strtolower($filetype[$parts[$x-1]->type]);
    
$pic[$x]['subtype'] = $parts[$x-1]->subtype;
    
$pic[$x]['data'] = utf8_encode(imap_fetchbody($mailbox$i$x)); 
  

Ausgabe bei Attachment und eingebundenen Bilder:

Code:
--_004_CF9F52CB5A0BCD43AFCF8D23AC040DC112F7EA8AF0VMNAIPSR
V08na_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hallo, dies ist eine Testmail
--_004_CF9F52CB5A0BCD43AFCF8D23AC040DC112F7EA8AF0VMNAIPSRV08na_
Content-Type: image/png; name="image001.png" Content-Description: 
image001.png Content-Disposition: inline; filename="image001.png"; size425;
 creation-date="Thu, 15 Dec 2011 07:48:59 GMT"; modification-date="Thu, 
15 Dec 2011 07:48:59 GMT" Content-ID: Content-Transfer-Encoding: base64
iVBORw0KGgoAAAANSUhEUgAAAgwAAAAmCAIAAAAnTFQhAAAAAXNSR0IArs4c6
QAAAAlwSFlzAAAO  ...
Wie bekomm ich heraus welcher Nachrichtenteil ein Text und was Bilder sind? Das muss ich ja beim Aufruf der Funktion imap_fetchbody() angeben (dritter Parameter)?

Irgendwie bin ich hier in einer Sackgasse gelandet Hat vielleicht jemand einen kleinen Denkanstoß für mich?
Pixelschubser ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.12.2011, 13:23  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Dein Problem ist einfach, dass Du nicht konsequent alle Bodyparts durch utf8_encode() jagen darfst. Du musst anhand von encoding, type, subtype und ggf. dparameters entscheiden, wie mit dem jeweiligen Body-Element zu verfahren ist.

Bedenke dabei übrigens bitte auch, dass Du parts rekursiv verarbeiten musst.

Wozu eigentlich das imap_fetchbody() im Schleifenkopf?

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 15.12.2011, 14:23  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Janz jenau, und im Beispiel wäre das
Zitat:
Content-Transfer-Encoding: base64
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 15.12.2011, 18:47  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Wozu eigentlich das imap_fetchbody() im Schleifenkopf?
Zitat:
Zitat von http://de3.php.net/manual/de/control-structures.for.php
Am Anfang jedes Schleifendurchlaufs wird die Anweisung expr2 ausgeführt. Wenn diese wahr ist (TRUE), wird die Schleife fortgesetzt und die untergeordneten Anweisungen werden ausgeführt. Andernfalls (FALSE) endet die Ausführung der Schleife.
Wobei da sowas wie for($i = 0; FALSE !== ($data = imap_fetchbody()); ++$i) sinnvoller wäre, um den Aufruf nicht nochmal erledigen zu müssen.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 15.12.2011, 20:34  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

@G.Schuster: Ich weiß, wie eine for-Schleife funktioniert.

Per Trial & Error auszulesen halte ich einfach für die falsche Methoden, um über die Einzelteile zu iterieren. Einmal imap_fetchstructure() und ein iterieren über parts wäre sinnvoller.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 15.12.2011, 20:47  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
@G.Schuster: Ich weiß, wie eine for-Schleife funktioniert.
Wozu dann die Frage?
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 15.12.2011, 21:53  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Weil ich wissen wollte, was sich der TE bei dem imap_fetchbody() an der Stelle gedacht hat? Warum wohl sonst?

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Zend_Mail Attachments im ./application/data/uploads Verzeichnis auswählen dreamcatcher PHP Einsteiger 1 13.08.2011 13:07
imap zugriff auf Kerio Mailserver Psydl PHP Tipps 2010 1 24.02.2010 12:19
PHP/IMAP: Probleme mit der imap resource Felix PHP Tipps 2009 3 15.01.2010 10:36
zertifizierte Mails mit IMAP auslesen peh PHP Tipps 2009 0 08.11.2009 15:39
Kontaktformular plus 3 Attachments funzt net catmoon PHP Tipps 2008 2 25.06.2008 10:15
IMAP mit SSL? DannyD PHP-Fortgeschrittene 3 21.10.2006 15:09
Imap Email abholen / korrekt decodieren (mit attachments) PHP-Fortgeschrittene 3 04.06.2006 12:17
IMAP - Empfangsdatum auf Sendedatum zurück setzen Stephan PHP-Fortgeschrittene 9 08.05.2006 17:59
imap funktioniert nicht Crypi PHP Tipps 2006 25 16.01.2006 16:51
imap probleme...Wie installiert man Imap? Server, Hosting und Workstations 2 06.12.2005 06:14
IMAP -&gt ; MySQL PHP Tipps 2005 5 16.06.2005 13:14
imap problem: E-Mails mit Anlagen PHP Tipps 2005 1 05.05.2005 22:35
imap c-client zu alt ? Und andere Fragen zu imap PHP Tipps 2005 2 20.02.2005 04:45
[Erledigt] problem mit imap in php PHP-Fortgeschrittene 3 02.11.2004 21:01
[Erledigt] PHP IMAP Funktion PHP-Fortgeschrittene 5 27.07.2004 10:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
imap body richtig ausgeben, imap_fetchbody attachment, php imap fetchbody, php imap_fetchbody multipart emails, html mails eingebundene bilder empfangen php, imap fetch body entschlüsseln, imap fetchbody, imap fetchbody speichern, php imap attachment, php imap fetch body attachment, php imap mail als text auslesen, imap fetch body, php mail attachment auslesen, php imap bild anzeigen, imap_fetchbody nur text, php imap attachment 2011, e mail abholen php imap anhang speichern, imap fetch body plain/text, php imap anhang auslesen, php imap_fetchbody 2 bilder in mail

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum