Einzelnen Beitrag anzeigen
Alt 17.07.2008, 17:21   #1 (permalink)
mathes
Neuer Benutzer
 
Registriert seit: 29.05.2008
Beiträge: 28
mathes befindet sich auf einem aufstrebenden Ast
Standard dateien aus verzeichnis einzeln als mail attachment versenden

tag forum,

in ein verzeichnis werden fortlaufend dateien gespeichert. diese sollen zeitgesteuert per mail() als attachment verschickt werden - alle innerhalb eines definierten zeitraums hinzugekommenen und jeweils eine datei / mail.

so sieht mein ansatz aus:

1. dateiverzeichnis lesen
2. auswahl der dateien nach den gewünschten kriterien (seit ymdh hinzugekommen, etc.)
3. foreach-schleife über das array aus 2.
4. encoden der datei
5. versenden der datei als attachment mit mail()

die funktionalitäten in 4. und 5. habe ich am laufen, das heißt, ich habe es geschafft eine valide mail mit validem attachment zu erzeugen); was mir nicht gelingt, ist die foreach-schleife in 3. so zu definieren, dass sie eine sinnvolle ausgabe liefert.
diese sieht momentan so aus: analog der zahl der in 2. eingeschränkten ergebnisse werden mails verschickt; die mails haben alle das gleiche (aus dem dateinamen generierte) subject; der body enthält den body der mail + den der vorherigen und der anhang ist korrupt (letzteres hängt imho auch mit dem falschen schleifendurchlauf zusammen).

hier mal mein code zum nachvollziehen; die hier nicht definierten variablen liegen bereits aus einem anderen script an:
PHP-Code:
#    TRENNELEMENT FUER DEN MAILHEADER
    
$mimeBoundary "==Multipart_Boundary_x".md5(mt_rand())."x";


#    WEITERE MAIL-ATTRIBUTE
    
$contentType "application/xml";
    
$mailBodyContentType "text/plain; charset=\"iso-8859-1\"";
    
$mailBodyContentTransferEncoding "7bit";
    
$mailHeaderContentType "text/plain; charset=iso-8859-15";
    
$mailHeaderMimeVersion "1.0";


#    LINE BREAKS
    
$lB="\r\n";


#    VERZEICHNIS LESEN
    
$readDirectory opendir($filePath);

        while (
false !== ($getFileName readdir($readDirectory))) {
            
$getFile fopen($filePath.$getFileName,'rb');


#    ERSTELLUNGS- / AENDERUNGSZEIT ERMITTELN
            
$getCreationTime filectime($filePath.$getFileName);
            
$creationTime date ("YmdH",$getCreationTime);


#    UNBRAUCHBARE DATEIEN AUSFILTERN
            
if ($getFileName != "." && $getFileName != "..") {


#    ARRAY ZERLEGEN
                
$getFileName explode($getFileName'');



#    EIN DURCHLAUF FUER JEDE DATEI
                
foreach ($dings as $bums)    {    //    keine ahnung, was ich hier als argumente nehmen muss...



#    DATEI ENCODEN
                    
$data fread($getFile,filesize($filePath.$writeFileName));
                    
fclose($getFile);
                    
$data chunk_split(base64_encode($data));


#    ATTRIBUTE DER mail()-FUNKTION
                    
$mailTo = [];

                    
$mailSubject = [];

                    
$mailBody .=
                        
"--{$mimeBoundary}".$lB.
                        
"Content-Type: ".$mailBodyContentType.$lB.
                        
"Content-Transfer-Encoding: ".$mailBodyContentTransferEncoding.$lB.
                        
$mailBodySalutation.$lB.$lB.$customerName.
                        
$mailBodyMessage1.$orderRecipientName.$mailBodyMessage2.$lB.$mailBodyMessage3.$lB.$lB.$lB.
                        
$mailBodyGreeting.$lB.$lB.$lB.
                        
"--{$mimeBoundary}".$lB.
                        
"Content-Type: {$contentType};".$lB.
                        
" name=\"{$getFileName}\"".$lB.
                        
$data.$lB.
                        
"--{$mimeBoundary}--".$lB;

                    
$mailHeader .=
                        
"From: […]"$lB.
                        
"Reply-To: […]"$lB.
                        
"Content-Type: […]"$lB.
                        
"MIME-Version: ".$mailHeaderMimeVersion.$lB.
                        
"Content-Type: multipart/mixed;".$lB.
                        
" boundary=\"{$mimeBoundary}\"".$lB;


#    VERSENDEN DER BENACHRICHTIGUNGS-MAIL
                    
$sendMail = @mail($mailTo,$mailSubject,$mailBody,$mailHeader);

                    }    
//    foreach ($getFileName as $getFileName)
                
}    //    if ($getFileName != "." && $getFileName != "..")
            
}    //    while (false !== ($getFileName = readdir($readDirectory)))


        
closedir($readDirectory);
#        }    //    if ($readDirectory = opendir($filePath)) 
irgendwie blicke ich nicht mehr durch und würde mich extrem über hilfe freuen...
__________________
grüße vom mathes
mathes ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten