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:
irgendwie blicke ich nicht mehr durch und würde mich extrem über hilfe freuen...
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))
Kommentar