ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1954
1954
EMPFEHLEN
-
31.07.06 17:00 #1
Ich bin auf der Such nach einer Möglichkeit, wie ich Anhänge von Mails, welche ich per imap-Funktion von einer POP3-Mailbox abhole, automatisch auf dem Webserver speichern kann, der Pfad und den Dateinamen möchte ich in eine DB speichern.
Nach Durcharbeiten etlicher Tutorial-Threads hab ich Dennis' Wronkas Skript gefunden:
http://www.tutorials.de/forum/php/24...t-erkannt.html
Ich denke damit komme ich zurecht, nur weiß ich nicht wie ich nun anstelle des Downloads die Anhänge direkt abspeichere. Ich bin aber der Meinung, daß ich an der Stelle, wo die Header gesendet werden, den Code entsprechend abändern muß...?PHP-Code:<?php
ob_start();
session_start();
//require("config.php");
if ((isset($_GET['msgid'])) && (isset($_GET['part'])))
{
$mbox=imap_open("{localhost/pop3:110}INBOX", "Name", "Passwort");
$struct=imap_fetchstructure($mbox,$_GET['msgid']);
$body=imap_fetchbody($mbox,$_GET['msgid'],$_GET['part']+1);
imap_close($mbox);
if ($struct->parts[$_GET['part']]->type==0)
{
$content_type="text";
}
elseif ($struct->parts[$_GET['part']]->type==4)
{
$content_type="audio";
}
elseif ($struct->parts[$_GET['part']]->type==5)
{
$content_type="image";
}
//elseif ($struct->parts[$_GET['part']]->type==3)
else
{
$content_type="application";
}
$content_type.="/".strtolower($struct->parts[$_GET['part']]->subtype);
$content_disposition=strtolower($struct->parts[$_GET['part']]->disposition);
header("Content-Type: ".$content_type);
header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\"");
if ($struct->parts[$_GET['part']]->encoding==3)
{
$body=base64_decode($body);
}
if ($struct->parts[$_GET['part']]->encoding==4)
{
$body=quoted_printable_decode($body);
}
echo $body;
}
ob_end_flush();
?>
Kann mir jemand weiterhelfen ?Es ist keine Schande, nicht alles zu wissen;
wohl aber, es nicht zugeben zu wollen.
Wie man Fragen richtig stellt...
KEINE ZIELGRUPPE
-
Die Teilinhalte selbst befinden sich jeweils in der $body-Variable. Es sollte also kein Problem sein den Wert dieser Variable in einer Datei zu speichern statt ihn direkt auszugeben. Zusätzlich solltest du jedoch noch den MIME-Typ und die Kodierung speichern, damit die Daten später richtig verarbeitet werden können.
Markus Wulftange
-
31.07.06 18:17 #3
Danke, soweit habe ich mir das schon gedacht, aber kannst du mir da mal auf die Sprünge helfen, wie ich da genau vorgehe, bzw. welche Funktion ich da verwenden muß ?
Es ist keine Schande, nicht alles zu wissen;
wohl aber, es nicht zugeben zu wollen.
Wie man Fragen richtig stellt...
KEINE ZIELGRUPPE
-
Den Dateinamen zum Speichern kannst Du in dieser Zeile sehen:
Er befindet sich in $struct->parts[$_GET['part']]->dparameters[0]->valuePHP-Code:header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\"");
Mit fopen() erstellst Du also diese Datei, decodierst gegebenenfalls den Anhand und schreibst ihn in die Datei.
Also ca. so:
Dies setzt Du dann anstelle dieses Codes ein:PHP-Code:if ($struct->parts[$_GET['part']]->encoding==3)
{
$body=base64_decode($body);
}
if ($struct->parts[$_GET['part']]->encoding==4)
{
$body=quoted_printable_decode($body);
}
$attachment=fopen($struct->parts[$_GET['part']]->dparameters[0]->value,'w');
fwrite($attachment,$body);
fclose($attachment);
PHP-Code:header("Content-Type: ".$content_type);
header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\"");
if ($struct->parts[$_GET['part']]->encoding==3)
{
$body=base64_decode($body);
}
if ($struct->parts[$_GET['part']]->encoding==4)
{
$body=quoted_printable_decode($body);
}
echo $body;
}
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
01.08.06 08:49 #5
Alles klar, fopen() und fwrite() war das, was ich gesucht hab, stand mal wieder völllig auf dem Schlauch....
Vieln Dank !Es ist keine Schande, nicht alles zu wissen;
wohl aber, es nicht zugeben zu wollen.
Wie man Fragen richtig stellt...
KEINE ZIELGRUPPE
Ähnliche Themen
-
Mail und seine Anhänge
Von bRainLaG im Forum Mac OSAntworten: 2Letzter Beitrag: 23.01.12, 21:37 -
E-Mail Anhänge(Viren) Speichern
Von themonk im Forum Coders TalkAntworten: 4Letzter Beitrag: 30.03.05, 20:17 -
Mail()-Anhänge
Von Vaio82 im Forum PHPAntworten: 3Letzter Beitrag: 15.02.05, 08:16 -
Firebox 2 blockt Mail-Anhänge nicht
Von hilfe firebox im Forum NetzwerkeAntworten: 0Letzter Beitrag: 02.01.04, 21:38





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren