 |
20.07.2007, 18:24
| Nach oben
#1 | | Erfahrener Benutzer
Registriert seit: 16.09.2005 Ort: CH :-)
Beiträge: 123
| 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
|
| |
20.07.2007, 22:07
| Nach oben
#2 | | Neuer Benutzer
Registriert seit: 23.05.2006 Ort: Meerbusch
Beiträge: 15
|
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.
|
| |
21.07.2007, 01:15
| Nach oben
#3 | | Dejan Spasic
Registriert seit: 05.01.2006 Ort: Düsseldorf
Beiträge: 169
| Zitat:
Zitat von Garnele 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) |
| |
24.07.2007, 20:36
| Nach oben
#4 | | Benjamin Klaile
Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.471
|
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. |
| |
11.08.2007, 23:08
| Nach oben
#5 | | Erfahrener Benutzer
Registriert seit: 16.09.2005 Ort: CH :-)
Beiträge: 123
|
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
|
| |
13.08.2007, 15:26
| Nach oben
#6 | | Jann Hendrik Bekaan
Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.203
| Zitat:
Zitat von Garnele 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.
|
| |
25.02.2008, 01:31
| Nach oben
#7 | | Verplanter Benutzer
Registriert seit: 14.12.2004
Beiträge: 227
|
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!
|
| |
25.02.2008, 03:19
| Nach oben
#8 | | Benjamin Steininger
Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
|
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.)
|
| |
25.02.2008, 19:04
| Nach oben
#9 | | Verplanter Benutzer
Registriert seit: 14.12.2004
Beiträge: 227
|
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!
|
| |
25.02.2008, 20:40
| Nach oben
#10 | | Lutz
Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
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 |
| |
25.02.2008, 20:54
| Nach oben
#11 | | Verplanter Benutzer
Registriert seit: 14.12.2004
Beiträge: 227
|
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_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_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).
|
| |
26.02.2008, 16:32
| Nach oben
#12 | | Benjamin Steininger
Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
| Zitat:
Zitat von MrNiceGuy 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 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_BLOWFISH, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_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).
|
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | |
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. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.
|