Mehrere Bilder als Anhang versenden

FLASHStyler

Mitglied
PHP:
<link rel="stylesheet" type="text/css" href="upload.css"> 
<TABLE BORDER="0">                  <TR>                 <TD>                 <img src="try2.gif" border="0" width="280" height="100">                 </TD>                 </TR> 

</TABLE> 
<?php 

        $datei_max = "3000000"; // max. Dateigroesse in Byte 
        $datei_ende = ".jpg"; // gewünschte Dateiendung 
        $datei_mime = "image/jpeg"; 

        $time = time(); 

        $ziel .= date("d_m_y__H_i",$time).$datei_ende; 

        $error_log = "<B>Folgende(r) Fehler sind (ist) aufgetreten:</B><br /><br />"; 

        function check_post_value($input,$error,$check) 
        { 
                if($check=='1'){ 
                                        if(empty($input)){ 
                                                return '<LI>Bitte geben Sie '.$error.' ein!<br />'; 
                    } 
                } else { 
                     if(!is_numeric($input)){ 
                        return '<LI>In dem Feld Mobile sind nur Zahlen erlaubt.<br />'; 
                     } 
                } 
        } 


//Angaben überprüfen 

                $error        =        ''; 

        $error .= check_post_value($_POST['name'],'Ihren Namen','1'); 
        $error .= check_post_value($_POST['adresse'],'Ihre Straße','1'); 
        $error .= check_post_value($_POST['plzort'],'Ihre(n) PLZ/ Ort','1'); 
        $error .= check_post_value($_POST['mobile'],'Ihre Nummer','1'); 
        $error .= check_post_value($_POST['nachricht'],'Ihre Nachricht','1'); 
        $error .= check_post_value($_POST['email'],'Ihre Emailaddresse','1'); 
        $error .= check_post_value($_POST['mobile'],'Mobile','0'); 


        if($file_size > $datei_max) { 
                $error .= "<LI>Die Datei ist gr&ouml;&szlig;er als $datei_max Byte!<br />"; 
        } 

        if($file_type != $datei_mime) { 
                $error .= "<LI>Der Dateityp ist falsch! Die Datei muss vom Typ $datei_ende sein.<br />"; 
        } 
        if(@file_exists($ziel) or !@copy($file, $ziel)) { 
            $error .= "<LI>Ein Fehler beim Kopieren der Datei $file_name ist aufgetreten!<br />"; 
        } 

        if($error) { 
            echo($error_log . $error . "<br /><b>Die Email wurde nicht versendet. Vorgang abgebrochen!</b>"); 
                        @unlink($file); 
        } 

//mail 
        $file = $ziel; 
        $file_name = $ziel; 
        $from = $_POST['email']; 
        $to = "ziel email adresse"; 
        $betreff = "betreff"; 
        $boundary = strtoupper(md5(uniqid(time()))); 
        $message = 'Name:'.$_POST['name'].' 
Email:'.$_POST['email'].' 

Adresse:'.$_POST['adresse'].' 
'.$_POST['plzort'].' 
Mobile: '.$_POST['mobile'].' 

Nachricht: 
'.$_POST['nachricht']; 

        $mail_header  = "From:$from"; 
        $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary"; 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: text/plain"; 
        $mail_header .= "\nContent-Transfer-Encoding: 8bit"; 
        //$mail_header .= "\n\n$message"; 
        $file_content = @fread(@fopen($file,"r"),@filesize($file)); 
        $file_content = @chunk_split(base64_encode($file_content)); 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\""; 
        $mail_header .= "\nContent-Transfer-Encoding: base64"; 
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\""; 
        $mail_header .= "\n\n$file_content"; 
        $mail_header .= "\n--$boundary"; 

                if (empty($error)) { 
                        @mail($to,$betreff,$message,$mail_header); 
                        @unlink($ziel); 
                        echo "<BR><font size='2'><b>Die Email wurde versendet. Vorgang beendet!</b></font>"; 
                        echo "<p><a href=\'javascript:window.close()\'>Fenster schliessen</a>"; 
        } else { 
        echo "<p><a href='javascript:history.back()'>Zurück zum Formular</a>"; 
        } 




?>

Damit versende ich ein Bild im Anhang. Wie schaffe ich es zwei Bilder als Anhang zu versenden?
Ich bräuchte halt auch zwei Auswahlfelder im Formular (input type="file").
 
Woher kommen denn die Bilder?
Werden die hochgeladen oder liegen die schon auf dem Server?
Wenn die hochgeladen werden: Einzeln oder zusammen?
 
PHP:
//Index.php
<?php

$target = "upload.php";

?>

<HTML>
<HEAD><TITLE>Title</TITLE>
<link rel="stylesheet" type="text/css" href="upload.css">
</HEAD>


<BODY>

<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo($target); ?>" METHOD="post">
<div id="teillinks">
<img src="try2.gif" border="0" width="280" height="80"><br />
<img src="wo_style.jpg" border="0" width="277" height="374">

</div>

<div id="teilrechtsFehler">

<TABLE BORDER="1">

                <TD COLSPAN="2">
                Felder mit einem (*) gekennzeichnet sind Pflichtfelder.
                </TD>
                </TR>

                <TR>
                <TD COLSPAN="2">* Name<br />
                <INPUT TYPE="text" NAME="name">
                </TD>

                </TR>


                       <TR>

                <TD COLSPAN="2">* E-Mail<br />
                <INPUT TYPE="text" NAME="email">
                </TD>

                       </TR>


                      <TR>

                <TD COLSPAN="2">* Sraße<br />
                <INPUT TYPE="text" NAME="adresse">
                </TD>

                </TR>


                       <TR>

                <TD COLSPAN="2">* PLZ und Ort<br />
                <INPUT TYPE="text" NAME="plzort" SIZE="8">
                </TD>
                </TR>


                <TR>

                <TD COLSPAN="2">* Handynummer<br />
                <INPUT TYPE="text" NAME="mobile">
                </TD>

                </TR>



                <TR>

                <TD COLSPAN="2">Nachricht<br />
                <TEXTAREA ROWS="5" COLS="24" NAME="nachricht">
                </TEXTAREA>
                </TD>
                </TR>

                <TR>

                <TD COLSPAN="2">* Dateien vom Typ JPG hochladen, max. 300Kb<br />
                <INPUT TYPE="file" NAME="file"><br><INPUT TYPE="file" NAME="file"></TD></TR>

                <TR>
                <TD><input type="checkbox" name="cbox" value="einverstanden" size="2"></TD>

                <TD><font size="1">Sonstiges</font></TD></TR>
                <TR>
                <TD>
                <INPUT TYPE="submit" VALUE="Senden"><br />
                <INPUT TYPE="reset" VALUE="Löschen"></FORM><br />
                </TD>
                </TR>

</div>

</TABLE>
</BODY>
</HTML>
PHP:
//Send.php


<link rel='stylesheet' type='text/css' href='upload.css'>

<div id="teillinks">
<img src='try2.gif' border='0' width='280' height='80'><br /><img src="wo_style.jpg" border="0" width="277" height="374">
</div>

<div id="teilrechtsFehler">
<?php

        $datei_max = "3000000"; // max. Dateigroesse in Byte
        $datei_ende = ".jpg"; // gewünschte Dateiendung
        $datei_mime = "image/jpeg";

        $time = time();

        $ziel .= date("d_m_y__H_i",$time).$datei_ende;

        $error_log = "<B>Folgende(r) Fehler sind (ist) aufgetreten:</B></br></br>";

        function check_post_value($input,$error,$check)
        {                if($check=='1'){
                                        if(empty($input)){
                                                return '<LI>Bitte geben Sie '.$error .'</br>';
                    }
                } else {
                     if(!is_numeric($input)){
                        return '<LI>In dem Feld Mobile sind nur Zahlen erlaubt.</br>';
                     }
                }
        }


//Angaben überprüfen

          $error = '';

        $error .= check_post_value($_POST['name'],'Ihren Namen ein!','1');
        $error .= check_post_value($_POST['adresse'],'Ihre Straße ein!','1');
        $error .= check_post_value($_POST['plzort'],'Ihre(n) PLZ/ Ort ein!','1');
        $error .= check_post_value($_POST['mobile'],'Ihre Nummer ein!','1');
        $error .= check_post_value($_POST['nachricht'],'Ihre Nachricht ein!','1');
        $error .= check_post_value($_POST['email'],'Ihre Emailaddresse ein!','1');
        $error .= check_post_value($_POST['mobile'],'Mobile ein!','0');
        $error .= check_post_value($_POST['cbox'],'sich damit einverstanden, dass Fotos von Ihnen gemacht werden!','1');


        if($file_size > $datei_max) {
                $error .= "<LI>Die Datei ist gr&ouml;&szlig;er als $datei_max Byte!</br>";
        }

        if ($file_type != "image/pjpeg" && $file_type != "image/jpeg") {
                $error .= "<LI>Der Dateityp ist falsch! Die Datei muss vom Typ $datei_ende sein.</br>";
        }
        if(@file_exists($ziel) or !@copy($file, $ziel)) {
            $error .= "<LI>Ein Fehler beim Kopieren der Datei $file_name ist aufgetreten!</br>";
        }

        if($error) {
            echo($error_log . $error . "<br /><b>Die Email wurde nicht versendet. Vorgang abgebrochen!</b>");
                        @unlink($file);
        }

//mail
        $file = $ziel;
        $file_name = $ziel;
        $from = $_POST['email'];
        $to = "email@provider.de";
        $betreff = "Betreff";
        $boundary = strtoupper(md5(uniqid(time())));
        $message = 'Name:'.$_POST['name'].'
Email:'.$_POST['email'].'

Adresse:'.$_POST['adresse'].', '.$_POST['plzort'].'
Mobile: '.$_POST['mobile'].'

Nachricht:
'.$_POST['nachricht'];

        $mail_header  = "From:$from";
        $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
        $mail_header .= "\n--$boundary";
        $mail_header .= "\nContent-Type: text/plain";
        $mail_header .= "\nContent-Transfer-Encoding: 8bit";
        //$mail_header .= "\n\n$message";
        $file_content = @fread(@fopen($file,"r"),@filesize($file));
        $file_content = @chunk_split(base64_encode($file_content));
        $mail_header .= "\n--$boundary";
        $mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\"";
        $mail_header .= "\nContent-Transfer-Encoding: base64";
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\"";
        $mail_header .= "\n\n$file_content";
        $mail_header .= "\n--$boundary";

                if (empty($error)) {
                        @mail($to,$betreff,$message,$mail_header);
                        @unlink($ziel);
                        echo "<BR><b>Die Email wurde versendet.</b>";
                        echo "<p><a href='javascript:window.close()'>Fenster schliessen</a>";
        } else {
        echo "<p><a href='javascript:history.back()'>Zurück zum Formular</a>";
        }




?>
</div>

Die Bilder soll man durch zwei <input type="file">- Felder auswählen können, diese werden dann hochgeladen und sollen versendet werden. Alles klappt mit einem Bild nur müsste ich zwei Bilder versenden können, aber ich kriegs irgendwie nicht hin.
 
Du musst halt beide Dateien auslesen und dann nochmal
PHP:
$mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\""; 
        $mail_header .= "\nContent-Transfer-Encoding: base64"; 
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\""; 
        $mail_header .= "\n\n$file_content"; 
        $mail_header .= "\n--$boundary";

Bei der letzten Boundary scheint es uebrigens notwendig, oder zumindest besser zu sein noch -- anzuhaengen.
Hat sich bei der Arbeit mit meinem Script gezeigt, da ich ansonsten immer eine 66 Byte grosse, leere Datei noch dabei hatte.
 
$_FILES ist ja ein Array.
Wenn Du folgendes hast
HTML:
<input type="file" name="pic1"><br>
<input type="file" name="pic1"><br>
findest Du die Daten ja in $_FILES['pic1'] und $_FILES['pic2']
Da es unnoetig ist mit move_uploaded_file die Bilder woanders hinzuschieben benoetigst Du nur tmp_name um die Daten zu lesen.
Also $_FILES['pic1']['tmp_name'] und $_FILES['pic2']['tmp_name']
Den richtigen Namen, zum setzen im Header, bekommst Du aus name.
Also $_FILES['pic1']['name'] und $_FILES['pic2']['name']

Nun nimmst Du den Code
PHP:
        $mail_header  = "From:$from"; 
        $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary"; 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: text/plain"; 
        $mail_header .= "\nContent-Transfer-Encoding: 8bit"; 
        //$mail_header .= "\n\n$message"; 
        $file_content = @fread(@fopen($file,"r"),@filesize($file)); 
        $file_content = @chunk_split(base64_encode($file_content)); 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\""; 
        $mail_header .= "\nContent-Transfer-Encoding: base64"; 
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\""; 
        $mail_header .= "\n\n$file_content"; 
        $mail_header .= "\n--$boundary";
und erweiterst ihn so
PHP:
        $mail_header  = "From:$from"; 
        $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary"; 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: text/plain"; 
        $mail_header .= "\nContent-Transfer-Encoding: 8bit"; 
        //$mail_header .= "\n\n$message"; 
$file1=fread(fopen($_FILES['pic1']['tmp_name'],"r"),filesize($_FILES['pic1']['tmp_name']));
$file2=fread(fopen($_FILES['pic2']['tmp_name'],"r"),filesize($_FILES['pic2']['tmp_name']));
$file1enc=chunk_split(base64_encode($file1));
$file2enc=chunk_split(base64_encode($file2));
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: application/octetstream; name=\"$_FILES['pic1']['name']\""; 
        $mail_header .= "\nContent-Transfer-Encoding: base64"; 
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$_FILES['pic1']['name']\""; 
        $mail_header .= "\n\n$file1enc"; 
        $mail_header .= "\n--$boundary"; 
        $mail_header .= "\nContent-Type: application/octetstream; name=\"$_FILES['pic2']['name']\""; 
        $mail_header .= "\nContent-Transfer-Encoding: base64"; 
        $mail_header .= "\nContent-Disposition: attachment; filename=\"$_FILES['pic2']['name']\""; 
        $mail_header .= "\n\n$file2enc"; 
        $mail_header .= "\n--$boundary--";

So, das sollte theoretisch gehen.
 

Neue Beiträge

Zurück