Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Anhang einer Mail auslesen
Antwort
 
Themen-Optionen
Alt 20.07.2007, 18:24   Nach oben    #1
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard Anhang einer Mail auslesen

Hallo Leute

Ich habe ein kleines Problem: Ich habe eine kleine Anwendung die mir Mails von einem Mailserver ausliest. So weit so gut, doch jetzt möchte ich den Anhang der Mails entweder direkt öffnen oder aber wenigstens in ein Verzeichniss auf dem Webserver kopieren. Ich habe bei den imap Funktionen etwas gesucht wurde jedoch nicht fündig
Geht sowas überhaupt? Wenn ja, wie denn?

LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.07.2007, 22:07   Nach oben    #2
carrib
Neuer Benutzer
 
Registriert seit: 23.05.2006
Ort: Meerbusch
Beiträge: 15
Standard

Hi!

Ich gehe davon aus, dass die Anwendung die Mails in der ursprünglichen Form (RFC822 oder RFC2045 konform) ablegt. Wenn dem so ist, schau Dir mal bitte die PHP Extension Mailparse an.
carrib ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.07.2007, 01:15   Nach oben    #3
dejan_spasic
Erfahrener Benutzer
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 168
Standard

Zitat:
Zitat von Garnele Beitrag anzeigen
Hallo Leute

Ich habe ein kleines Problem: Ich habe eine kleine Anwendung die mir Mails von einem Mailserver ausliest. So weit so gut, doch jetzt möchte ich den Anhang der Mails entweder direkt öffnen oder aber wenigstens in ein Verzeichniss auf dem Webserver kopieren. Ich habe bei den imap Funktionen etwas gesucht wurde jedoch nicht fündig
Geht sowas überhaupt? Wenn ja, wie denn?

LG
Garnele
In den letzen Eintrag sollte die Lösung zu finden sein. http://www.tutorials.de/forum/php/279397-pop3-imap.html

Aber auch die Komponente Mail von eZ components kann einem weiterhelfen.
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.07.2007, 20:36   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hat sich dein Problem mittlerweile erledigt?
Wenn du eine Lösung gefunden hast, dann wäre es nett, wenn du diese mit uns teilen könntest.

Wenn du noch Fragen hast .. frag.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2007, 23:08   Nach oben    #5
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hallo Ben

Oh sorry, tut mir Leid. Ja ich habe noch etwas gegoogelt dann bin ich auf einen Beitrag gestosen wo es erklärt wurde (weiss leider nicht mehr wo). Meine Version ist einfach an mich angepasst und leicht modifiziert Mein File rechnet immer mit 2 Anhängen in der Mail, da dies bei meinem Sonderfall so war (deshalb die arrays readed und children).

PHP-Code:
// Setzt eine Pop3 Verbindung voraus

$files = array();
$readed = array();
$children = array();

//
// Mails auslesen
//
$info imap_check($server);
$attachId 1;
if (
$info->Nmsgs >= 1)
{
  for (
$i=1$i<=$info->Nmsgs$i++)
  {
    
$actMail imap_fetchstructure($server$i);
    
$headerinfo imap_headerinfo($server$i);
    
$PartsInActMail count($actMail->parts);
    if (
$PartsInActMail >= 2//Nachricht hat Anhang
    
{
      for (
$p=1$p<$PartsInActMail$p++)
      {
        
$inhalt base64_decode(imap_fetchbody($server$i$p+1)); //Anhang auslesen
        
$fp fopen("temp/part-".$attachId.".zip""w+"); //Kopifile öffnen
        
$files [$attachId] = "part-".$attachId.".zip";
        
fwrite ($fp$inhalt) or die ("Schreibfehler!"); // Anhang kopieren
        
fclose ($fp);
        
$attachId ++;
      }
    }
  }
}
else
{
  die (
"Keine Nachrichten da!");

Bei mir geht das Script dann so weiter, dass die Dateien geöffnet werden und am Ende alles in eine Datei gewurschtlet wird, welche dann wiederum über Mail als Anhang versendet wird. Das senden mache ich so:

PHP-Code:
//
// ZIP versenden (setzt PHP 5.2 voraus!)
//
$message "Hier kommt dein bestelltes Zip File.";
$message .= "\r\n";
$message .= "begin 666 $filename\r\n";
$message .= convert_uuencode(fread(fopen($filename"r"), filesize($filename)));
$message .= "end\r\n";

if (
mail($to$betreff$message"From: Me <blub@domain.ch>"))
{
  echo 
"Mail gesendet!";
}
else
{
  echo 
"Fehler beim Mail senden!";

Das senden konnte ich nie testen da ich lokal kein mail instaliert habe und mein Hoster noch bei PHP 4.3.10 steckt

Liebe Grüsse, Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.08.2007, 15:26   Nach oben    #6
Jann Hendrik
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.233
Standard

Zitat:
Zitat von Garnele Beitrag anzeigen
Das senden konnte ich nie testen da ich lokal kein mail instaliert habe und mein Hoster noch bei PHP 4.3.10 steckt
Dann ist es an der Zeit den Anbieter zu wechseln.
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 01:31   Nach oben    #7
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 212
Standard

Hat jemand nen Hinweis wie man das Attachment direkt einfach so wie es ist abspeichert !?

mittels imap_savebody ( $this->ebox, './tmp/x.xml' , $eBoxid, 2);

ändert er mir den Inhalt des xml Files ab !?
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 03:19   Nach oben    #8
robo47
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.188
Standard

was genau ändert er denn ?
musst du den inhalt vielleicht noch irgendwie decodieren/umwandeln (ich denke da an base64, uuencode oder was es da sonst noch so gibt.)
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 19:04   Nach oben    #9
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 212
Standard

Hmm, naja ist irgendie komisch hänge da zwischen zwei Stühlen ...

fazit ist bekomme eine Mail mit nem Anhang als BLOWFISH verschlüsselt.

PHP-Code:
$inhalt base64_decode(imap_fetchbody($this->ebox$eBoxid'2'));
$encrypted $inhalt;

#$encrypted = mcrypt_cbc(MCRYPT_BLOWFISH,$key,$inhalt,MCRYPT_ENCRYPT,$iv);
$encrypted mcrypt_cbc(MCRYPT_BLOWFISH,$key,$inhalt,MCRYPT_DECRYPT,$iv);

$fp fopen("./x.xml""w+");
fwrite ($fp$encrypted) or die ("Schreibfehler!"); 
fclose ($fp); 
fazit ist das er den rotz einfach nicht macht. Kein Fehler sondern
ich hänge hier dran das er beim Decodieren von BLOWFISH einfach
nur Müll zurück gibt anstatt das Dokument.

Das mit dem $iv ist mir auch nicht ganz klar ... der $key sollte ja
der Schlüssel sein der beim Codieren verwendet wurde.

Hatte das ganze auch nur mit nem Beispiel XML File getestet, aber dann hat er mir überall zB. =OA= reingesetzt.

hmm, da bin ich etwas auf verlorenem Posten ...
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 20:40   Nach oben    #10
MrNiceGuy
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 609
Standard

Also mit Blowfish habe ich auch so meine Probleme, mein PHP "sagt" zwar, dass das funktionieren soll, tut es aber nicht. Selbst die Beispiele von php.net arbeiten nicht.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 20:54   Nach oben    #11
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 212
Standard

Frag mal ... also das hier funzt ... nur wenn ich nen String aus ne Datei nehme dann nicht mehr (bzw. aus dem Attachment) *wunder

PHP-Code:
$iv_size mcrypt_get_iv_size(MCRYPT_BLOWFISHMCRYPT_MODE_ECB);
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);

$data "password";
$key 'huhu';

$encrypted_data mcrypt_ecb(MCRYPT_BLOWFISH,$key,$data,MCRYPT_ENCRYPT,$iv);
    echo 
$data.'#'.$encrypted_data.'<br>';

$decrypted_data mcrypt_ecb(MCRYPT_BLOWFISH,$key,$encrypted_data,MCRYPT_DECRYPT,$iv);
    echo 
$data.'#'.$decrypted_data.'<br>'
hmm ... komisch oder ... !?

Hab da auch irgendwo her mal gelesen das es Probleme mit Dateien geben soll, aber gut
dann hole ich mir die Daten per file_get_contents() , aber wieder ein Fall von Denkste ...
irgend was verbiegt mir die FileDaten !?

Setze jetzt mal gedanklich irgendwie an Binär an ... muss nur den rotz finden der mir die binären Daten
aus der Datei übergibt ... (fragt sich ist das auch für Blow), anders auf php.net zu lesen ...

mcrypt_ecb with base64_decode gave some problems, i found out that it had to be chopped to work:

Zitat:
chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
($input),MCRYPT_DECRYPT));
und ...

Zitat:
the encrypted result data maybe binary data and It make errors in sql query.
so use the base64_encode/base64_decode function with mcrypt()
try below

base64_encode(mcrypt_ecb(MCRYPT_BLOWFISH,$key,$inp ut,MCRYPT_ENCRYPT));

mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode($inp ut),MCRYPT_DECRYPT);
aber ... egal wie -> nüscht !

Edit:

Hmm ...

Zitat:
You must (in CFB and OFB mode) or can (in CBC mode) supply an initialization vector (IV) to the respective cipher function. The IV must be unique and must be the same when decrypting/encrypting. With data which is stored encrypted, you can take the output of a function of the index under which the data is stored (e.g. the MD5 key of the filename). Alternatively, you can transmit the IV together with the encrypted data (see chapter 9.3 of Applied Cryptography by Schneier (ISBN 0-471-11709-9) for a discussion of this topic).
und wenn ich den nicht kenne ists mau ... oder !? (den $iv siehe oben)
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!

Geändert von DasMööp (25.02.2008 um 23:22 Uhr).
DasMööp ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2008, 16:32   Nach oben    #12
robo47
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.188
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Also mit Blowfish habe ich auch so meine Probleme, mein PHP "sagt" zwar, dass das funktionieren soll, tut es aber nicht. Selbst die Beispiele von php.net arbeiten nicht.
ich hab mich mit mcrypt auch schon rumgeschlagen und dann irgendwann die lust verloren, wichtig ist, nur weil er in der phpinfo mcrypt anzeigt und dort auch diverse Algorithmen auftauchen, heißt das noch lange nicht sie funktionieren auch .... ich bin daran schon ziemlich verzweifelt bis ich self test fand.

nachdem ich dann mittels http://de.php.net/manual/en/function...-self-test.php die algos alle durchgetestet hatte und die selftests für diverse algos nicht funktionierten, hab ich es gelassen mein php wieder ohne mcrypt und mhash kompiliert. Für hashs bin ich auf http://de3.php.net/hash umgestiegen mit der seit php 5.1.2 vorhandenen, was ich von der benutzung her besser + einfacher fand, online zu sehen: http://public.robo47.net/hashwert-datei-berechnen.php

Zitat:
Zitat von DasMööp Beitrag anzeigen
Frag mal ... also das hier funzt ... nur wenn ich nen String aus ne Datei nehme dann nicht mehr (bzw. aus dem Attachment) *wunder

PHP-Code:
$iv_size mcrypt_get_iv_size(MCRYPT_BLOWFISHMCRYPT_MODE_ECB);
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);

$data "password";
$key 'huhu';

$encrypted_data mcrypt_ecb(MCRYPT_BLOWFISH,$key,$data,MCRYPT_ENCRYPT,$iv);
    echo 
$data.'#'.$encrypted_data.'<br>';

$decrypted_data mcrypt_ecb(MCRYPT_BLOWFISH,$key,$encrypted_data,MCRYPT_DECRYPT,$iv);
    echo 
$data.'#'.$decrypted_data.'<br>'
hmm ... komisch oder ... !?

Hab da auch irgendwo her mal gelesen das es Probleme mit Dateien geben soll, aber gut
dann hole ich mir die Daten per file_get_contents() , aber wieder ein Fall von Denkste ...
irgend was verbiegt mir die FileDaten !?

Setze jetzt mal gedanklich irgendwie an Binär an ... muss nur den rotz finden der mir die binären Daten
aus der Datei übergibt ... (fragt sich ist das auch für Blow), anders auf php.net zu lesen ...

mcrypt_ecb with base64_decode gave some problems, i found out that it had to be chopped to work:

Zitat:
chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
($input),MCRYPT_DECRYPT));
und ...

Zitat:
the encrypted result data maybe binary data and It make errors in sql query.
so use the base64_encode/base64_decode function with mcrypt()
try below

base64_encode(mcrypt_ecb(MCRYPT_BLOWFISH,$key,$inp ut,MCRYPT_ENCRYPT));

mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode($inp ut),MCRYPT_DECRYPT);
aber ... egal wie -> nüscht !

Edit:

Hmm ...

Zitat:
You must (in CFB and OFB mode) or can (in CBC mode) supply an initialization vector (IV) to the respective cipher function. The IV must be unique and must be the same when decrypting/encrypting. With data which is stored encrypted, you can take the output of a function of the index under which the data is stored (e.g. the MD5 key of the filename). Alternatively, you can transmit the IV together with the encrypted data (see chapter 9.3 of Applied Cryptography by Schneier (ISBN 0-471-11709-9) for a discussion of this topic).
und wenn ich den nicht kenne ists mau ... oder !? (den $iv siehe oben)
auch an dich -> teste erstmal alle deine mcrypt-algos wie oben beschrieben durch und schau ob der gewünschte algo sauber arbeitet.

ohne den passenden Mode wird das nichts, ausser du probierst alle durch und wenn du weist der inhalt ist xml und fängt beispielsweise mit <?xml an, bauste nen regex ein der auf <?xml testet, dann hast du rausgefunden welcher mode benutzt wird, gibt ja jetzt nicht soooo viele.

Alternativ rausfinden was das Programm mit dem verschlüsselt wird benutzt, wenn es ein properitäres produkt ist, wirds halt eventuell schwer an die sources zu kommen und zu schauen ob ein vector benutzt wird und ihn dann auch zu nutzen.

allgemein würde ich an deiner stelle so vorgehen:

1) algos mit self-test testen, wenn blowfish okay ist -> weitergehen

2) unverschlüsselte mails schicken (mit binären attachment) und das versuchen saube zu exportieren bis es funktioniert (sinnvoller weise nicht durch "ausführen/abspielen" klappt überprüfen, sondern indem du dir prüfsummen (md5, sha1 oder was auch immer du willst / dir grad zur verfügung) nimmst und vergleichst, weil wenn da schon was nicht stimmt, wird das auch nichts mit dem entschlüsseln)

3) gleiches spiel jetzt nochmal mit ascii-attachments, um zu schauen dass keine umbrüche irgendwie falsch gekillt oder verändert werden

4) ein php-script basteln das 2 dateien (ascii + binär) aus dem dateisystem nimmt, mit blowfisch verschlüsselt + speichert (ruhig mit allen zur verfügung stehen Modes (bei denen die einen brauchen mit einem FESTEN vector [den vorher überprüfen dass er die richtige länge hat, mcrypt bietet dafür ja funktionen an]) und danach die verschlüsselten Dateien in ein 2tes verzeichnis entschlüsselt speichern und wieder mit einem hashalgorhytmus schauen ob die dateien sind wie vorher

5) jetzt musst du mit dem gewonnen Wissen ein script basteln, dass die verschlüsselten Mailanhänge aus deinen mails versucht zu entschlüsseln dazu wirst du entweder mehr infos über das programm mit dem verschlüsselt wird brauchen (mode + vector). die modes kannst du durchtesten, vectoren wird zu ner langen bruteforce-sache

6) das alles zusammen in dein gewünschtes script packen.

Geändert von robo47 (26.02.2008 um 16:40 Uhr).
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mail-Klasse; Problem mit dem Anhang Jann Hendrik PEAR, PECL und Frameworks 5 04.07.2007 09:16
mail() logging Patch für PHP verfügbar Ben Nachrichten 0 14.12.2006 08:53
[PHP] Fremde Webseiten auslesen WarrenFaith Tutorials 3 14.03.2006 15:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:24 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.