Überprüfen, ob Anhang an Mail hängt

NightWatcher

Erfahrenes Mitglied
Hi Luete,

bin derzeit, ein Webmail Portal am Programmieren. Nun möchte ich auslesen. ob ein Anhang an einer Mail hängt, oder nicht.

Kann mir da jemand schnell die Funktion nennen?
Danke
 
Ich würde mir an deiner Stelle mal den Quellcode der Mails anschauen, da findet man schon einige Einträge, mit denen man erkennen könnte, dass da eine Datei mit dran hängt.

Eine simple aber nicht sehr sichere Methode ists noch, einfach mit der größe der Mail zu rechnen ;)
 
ich hatte eigentlich mir einer qualifizierteren Antwort hier gerechnet.

ich habe mit imap_open() nun schon eine Verbindung geöffnet. ( alles gut).
Jetzt möchte ich aber ebenfalls noch den Anhang anzeigen lass, falls vorhanden. Daher brauch ich das.
 
Was heisst hier qualifiziert, ok, ich gebs zu, das mit der größe war nen Scherz...

Vieleicht schwingst du google mal nach etwas nicht PHP spezifischen.
Irgendwas mit MIME Types usw.

Wenn ich am Thema vorbei glitsche, sagt mir rechtzeitig bescheid ;)
 
ich habe schon alle möglichen Suchmaschinen durch und im Handbuch von PHP auch schon alles durchgeschaut.

Ich finde nur nicht den passenden Befehl :(
 
Hallo,

eine Möglichkeit auf die Anzahl der einzelnen Mailteile zu kommen ist die Funktion imap_fetchstructure($fd, $id);. Wobei $fd die Verbindung zum e-mailkonto ist und $id die Mailnummer.

Der Rückgabewert dieser Funktion ist ein Objekt, in dem alle relevanten Strukturdaten der Mail gespeichert sind.
 
Original geschrieben von NightWatcher
ich hatte eigentlich mir einer qualifizierteren Antwort hier gerechnet.

ich habe mit imap_open() nun schon eine Verbindung geöffnet. ( alles gut).
Jetzt möchte ich aber ebenfalls noch den Anhang anzeigen lass, falls vorhanden. Daher brauch ich das.

So schlecht war die Antwort nicht:

Schau dir mal den Header einer Mail an, hier als Beispiel eine MS Patch Spam / Dialer Mail:

Code:
Date: Thu, 4 Dec 2003 12:41:39 +1100 (added by postmaster@iprimus.com.au)
X-Gnus-Mail-Source: file:/var/spool/mail/holyfly
Message-ID: <3F8F522A010FAB35@> (added by postmaster@iprimus.com.au)
From: "Administrator" <qmaildaemon@yahoo.com>
To: "Net Client" <receiver@homeserver.com>
SUBJECT: mail: user unknown
Mime-Version: 1.0
Content-Type: multipart/alternative;
        boundary="cnmmbbiqsgatoxq"
X-Spam-Status: No, hits=7.8 required=9999.0
        tests=FORGED_YAHOO_RCVD,HTML_30_40,HTML_MESSAGE,
              HTML_RELAYING_FRAME,MICROSOFT_EXECUTABLE,
              MIME_HTML_NO_CHARSET,MIME_HTML_ONLY,MIME_SUSPECT_NAME,
              MSGID_NO_HOST
        version=2.55
X-Spam-Level: *******
X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp)
X-Virus: Infected
X-Virus-Type: Worm.Gibe.F
Lines: 1895
Xref: ukraine.ontimedata.de mail.misc:1018

--cnmmbbiqsgatoxq
 [viele viele Daten]
--cnmmbbiqsgatoxq--

besonders Interressant folgendes:

Content-Type: multipart/alternative;
boundary="cnmmbbiqsgatoxq"

multipart Content-Type sind alle Mails mit Anhang. Boundarry ist ein uniq String der
den Beginn und ende des Anhang kenntlich macht.
mann sieht diese Zeichenfolge hier:
--cnmmbbiqsgatoxq
dann kommt der Anhang
--cnmmbbiqsgatoxq--
damit endet der Anhang.

Suche nach den Vorkommen multipart und boundary start und ende, und schon
weisst du ob es eine Email mit Anhang ist.
 
Danke, genau auf sowas wollte ich anspielen, naja...
Falsch ausgedrückt oder falsch verstanden :(

Aber nun sind wir ja auf dem Besten Weg... :)
 
MHMH :(

mom, ich zeige euch mal meinen Quell ausschnitt, aus dem PHP Code

PHP:
<?
include("functions/connect.php");
$check = imap_check($mailbox);
$Anzahl_Nachrichten = $check->Nmsgs;
?>
					<p></p>
					<p>
     					<table border="0" style="border-collapse: collapse" width="90%" cellpadding="0" id="table5">
                        <tr><td colspan="4">Sie haben <?echo$Anzahl_Nachrichten;?> Nachrichten im Postfach.</td></tr>
                        <tr>
							<td bgcolor="#6EA1D9" width="27%">
							<p align="left">Absender:</td>
							<td bgcolor="#6EA1D9" width="40%">
							Betreff:</td>
							<td bgcolor="#6EA1D9" width="8%">
							Anhang:</td>
                            <td bgcolor="#6EA1D9" width="16%">
							Empfangen:</td>
                            <td bgcolor="#6EA1D9" width="9%">
							Löschen:</td>
						</tr>
<?
$nMessages = imap_num_msg($mailbox);
for($i = 1; $i <= $nMessages; $i++)
    {
    $header = imap_header($mailbox, $i);
    $datum = $header->Date;
    $datum_end = explode(" ","$datum");
//    $m_id = $header->message_id;
    $empfaenger = $header->toaddress;
    $betreff = $header->Subject;
    $absender = $header->from[0]->personal;
    $absender_email = $header->from[0]->mailbox."@".$header->from[0]->host;
//    $body = imap_body($mailbox,$i);
//    $text_koerper = $body;
//    $fheader = imap_fetchheader($mailbox,$i);?>
						<tr>
							<td bgcolor="#FFFFFF"><?echo'<a href="mailto:'.$absender_email.'">'.$absender;?></a></td>
							<td bgcolor="#FFFFFF"><?echo$betreff;?></td>
							<td bgcolor="#FFFFFF">
							<p align="center">
							<img border="0" src="images/anhang.jpg" width="14" height="15"></td>
                            <td bgcolor="#FFFFFF"><?echo$datum_end[1].".".$datum_end[2].".".$datum_end[3]."<br>".$datum_end[4];?></td>
                            <td bgcolor="#FFFFFF">
							<form method="POST" action="#">
								<p align="center">
								<input type="checkbox" name="C1" value="ON"></p>
							</form>
							</td>
       <?}
       imap_close($mailbox);
       ?>

Was ich jetzt noch möchte, ist mit folgender Connection auslesen, ob ein Anhang an der Mail hängt. Die e_mails werden ja nicht kopiert, sondern nur der Inhalt vom POP/IMAP Server ausgelesen.
Muss doch irgendwo in der imap_header() oder so, stehen, ob ein Anhang existiert, oder nicht!?

Vielen Dank!
 
Zurück