php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.07.2008, 17:21   #1 (permalink)
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

Alt 17.07.2008, 17:25   #2 (permalink)
Moderator
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 7.455
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wofür brauchst du überhaupt die foreach() Schleife? Du gehst doch mit der while() Schleife jede Datei durch, und die die du verschicken willst kannst du doch dann in der while() Schleife nutzen. Du iterierst ja mit while() schon über alle Dateien!
Flor1an ist offline  
Alt 17.07.2008, 17:35   #3 (permalink)
Neuer Benutzer
 
Registriert seit: 29.05.2008
Beiträge: 28
mathes befindet sich auf einem aufstrebenden Ast
Standard

ohja *schäm*...
wie gesagt, mir verschwimmt alles gerade etwas vor den augen...


die foreach-schleife habe ich entfernt, das ergebnis bleibt
__________________
grüße vom mathes
mathes ist offline  
Alt 17.07.2008, 18:17   #4 (permalink)
Moderator
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 7.455
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja vielleicht solltest du auch die Namen der Variablen anpassen dass der Filename auch dann wirklich die Datei ist die angehängt wird. Ich seh da bei fread() nur ein $getFile und sonst meisten $getFileName.

Und was soll überhaupt die Zeile $getFileName = explode($getFileName, ''); ???
Flor1an ist offline  
Alt 17.07.2008, 19:16   #5 (permalink)
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 2.364
PHP-Kenntnisse:
Fortgeschritten
Wolla ist einfach richtig nettWolla ist einfach richtig nettWolla ist einfach richtig nettWolla ist einfach richtig nett
Wolla eine Nachricht über ICQ schicken
Standard

Wenn die Dateien nach dem Mailen nicht automatisch verschoben oder gelöscht werden, musst du auch sicherstellen, dass die nicht mehrfach angefasst werden.

Alternativ kannst du ja auch den URL der Dateien mailen und der Empfänger macht einen Download.
Wolla ist offline  
Alt 17.07.2008, 19:45   #6 (permalink)
Neuer Benutzer
 
Registriert seit: 29.05.2008
Beiträge: 28
mathes befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ja vielleicht solltest du auch die Namen der Variablen anpassen dass der Filename auch dann wirklich die Datei ist die angehängt wird. Ich seh da bei fread() nur ein $getFile und sonst meisten $getFileName.

Und was soll überhaupt die Zeile $getFileName = explode($getFileName, ''); ???
*hüstel* ich werde nochmal drüberschauen...

Zitat:
Wenn die Dateien nach dem Mailen nicht automatisch verschoben oder gelöscht werden, musst du auch sicherstellen, dass die nicht mehrfach angefasst werden.
das wird durch die zeitsteuerung (intervallweise) von selbst geregelt.

Zitat:
Alternativ kannst du ja auch den URL der Dateien mailen und der Empfänger macht einen Download.
nee, da gibt es eine vorgabe...
__________________
grüße vom mathes
mathes ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
Mit unlink alle Dateien im Verzeichnis löschen? finerip PHP Tipps 2006 13 26.10.2006 20:23
-bin Dateien im DATA Verzeichnis von mysql sunset Datenbanken 3 06.04.2006 09:44
mail attachment abspeichern PHP Tipps 2006 4 17.03.2006 15:08
nur bestimmte Dateien aus einem Verzeichnis auslesen Madden PHP Tipps 2006 2 07.03.2006 17:10
Verzeichnis und Dateien darin mit htaccess schützen Server, Hosting und Workstations 1 01.11.2005 19:49
chmod 0755 für alle Dateien in einem Verzeichnis Drago PHP Tipps 2005-2 8 25.10.2005 15:39
Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
[Erledigt] Mail versenden über externen Server mit SMTP und Port 25 PHP Tipps 2005-2 2 07.10.2005 22:23
html mail versenden PHP Tipps 2005-2 3 17.09.2005 13:48
Dateien in ein anderes Verzeichnis kopieren PHP Tipps 2005-2 3 09.08.2005 12:03
nur jpg und gif dateien aus verzeichnis auslesen PHP Tipps 2005-2 6 24.07.2005 14:33
pear mime mail >> attachment funktioniert nicht PHP Tipps 2005 4 28.01.2005 16:23
Mail versenden - Fehler 553 Anuschka PHP Tipps 2004-2 7 13.12.2004 19:54
Formular mit Attachment(doc, pdf, zip...)als Mail versenden PHP-Fortgeschrittene 3 04.11.2004 14:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mailto attachment, mailto anhang, php datei versenden, php datei in anderes verzeichnis senden, attachment datei, phpmailer getfile php datei, php mail attachment, datei mit php verschicken, mailto datei, dateien mit php versenden, php mail datei verschicken, angelegte txt datei in mail schicken php script, php upgeloadete datei direkt mailen, php attachment versenden, php email attachment senden, dateien versenden php, mailto mit attachment, php datei mailen, php jede datei im verzeichnis, sending xml attachments php

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum