Hallo,
ich hab ein PHP-Skriopt geschrieben, zum auslesen von Kommaseparierten Dateien. mit folgendem Quelltext:
<?php
$verzeichnis = "export/";
$mail_template = "mail_template.txt";
$log_datei = "log_dhl.txt";
$betreff = "Paketversand";
$ok = 0;
$fehler = 0;
//Klasse einbinden
require('phpmailer/class.phpmailer.php');
$log_fp = fopen($log_datei, "a+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
$handle = opendir($verzeichnis);
while($file = readdir($handle))
{
if(substr($file, -4) == ".txt") {
$pfad = $verzeichnis."/".$file;
$Dateizeiger = fopen($pfad, "r");
while(($Daten = fgetcsv($Dateizeiger, 1000, ";")) !== FALSE)
{
$zeile = "";
$paketid = $Daten[1];
$name1 = $Daten[17];
$name2 = $Daten[18];
$emailadresse = $Daten[19];
$plz = $Daten[31];
$ort = $Daten[33];
$strasse = $Daten[34];
$hausnummer = $Daten[42];
if(!strcmp($Daten[25],"N"))
{
$nachname_flag = true;
}
else
{
$nachname_flag = false;
}
$nachname_preis = $Daten[27];
$datei = fopen($mail_template , "r");
$text = fread($datei , 1000);
fclose($datei);
$text = str_replace("%IDENTCODE%",$paketid, $text);
$name = $name1." ".$name2;
$name = trim($name);
$text = str_replace("%NAME%", $name, $text);
$text = str_replace("%STRASSE%", $strasse, $text);
$text = str_replace("%HAUS_NR%", $hausnummer, $text);
$text = str_replace("%PLZ%", $plz, $text);
$text = str_replace("%ORT%", $ort, $text);
$text = str_replace("%IDC%", $paketid, $text);
if($nachname_flag)
{
$nachname_string = "Fälliger Nachnamebetrag: ".$nachname_preis." Euro";
$text = str_replace("%NACHNAME%", $nachname_string, $text);
}
else
{
$text = str_replace("%NACHNAME%", " ", $text);
}
//Instanz von PHPMailer bilden
$mail = new PHPMailer();
//Absenderadresse der Email setzen
$mail->From = "versand@natterer-modellbau.de";
$mail->IsSMTP(); //Versand über SMTP festlegen
$mail->Host = "smtp.1und1.de"; //SMTP-Server setzen
$mail->SMTPAuth = true; //Authentifizierung aktivieren
$mail->Username = "versand@natterer-modellbau.de"; // SMTP Benutzername
$mail->Password = "6iAy5ok7"; // SMTP Passwort
//Name des Abenders setzen
$mail->FromName = "Natterer Modellbau";
//Empfängeradresse setzen
$mail->AddAddress($emailadresse);
//Betreff der Email setzen
$mail->Subject = "Versandlink DHL";
//Text der EMail setzen
$mail->Body = $text;
if(!$mail->Send())
{
echo '<tr bgcolor="#FF0000">';
echo '<td>'.$paketid.'</td>';
echo '<td>'.$name1.' '.$name2.'</td>';
echo '<td>'.$emailadresse.'</td>';
echo '<td>'.$mail->ErrorInfo.'</td>';
echo '</tr>';
$fehler++;
//Logzeile vorbereiten
$datum = date("d.m.Y");
$uhrzeit = date("H:i");
$zeile = "\n".$datum." - ".$uhrzeit." Uhr;".";".$paketid.";".$name1." ".$name2.";".$emailadresse.";".$mail->ErrorInfo.$paketid;
fwrite($log_fp , $zeile); // Dateiinhalt in die Datei schreiben
echo "
";
fclose($Dateizeiger);
$t1 = $verzeichnis."/".$file;
$t2 = $verzeichnis."fehler/".$file;
copy($t1,$t2);
}
else
{
echo '<tr bgcolor="#00FF00">';
echo '<td>'.$paketid.'</td>';
echo '<td>'.$name1.' '.$name2.'</td>';
echo '<td>'.$emailadresse.'</td>';
echo '<td>OK</td>';
echo '</tr>';
$ok ++;
echo "
";
fclose($Dateizeiger);
}
unlink($verzeichnis."/".$file);
}
}
}
fclose($log_fp); // Datei schließen
closedir($handle);
echo '</table>';
echo '
';
$gesamt = $ok + $fehler;
echo 'Es wurden '.$gesamt.' Emails versendet, davon:
';
echo $ok.' mit Status OK
';
echo $fehler.' mit Status Fehler <br / >';
?>
Alles anzeigen
Wobei eigentlich nur die ersten paar interesssant sein dürften, der vollständigkeit halber hab ich alles angefügt.
Es wird auch alles ausgeführt, allerdings kommt immer noch die Warnung:
Warning: fgetcsv(): 7 is not a valid stream resource in /opt/lampp/htdocs/dhl_versand.php on line 40
Die Zeile 40 ist folgende:
while(($Daten = fgetcsv($Dateizeiger, 1000, ";")) !== FALSE)
{