Automatisierte Dumperstellung

Begonnen von Chrisoffstormydays, 22 November 2002, 19:09:39

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Chrisoffstormydays

Moin,

mit

 
<?php
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h ihr.datenbankserver.de DATENBANKNAME > /is/htdocs/kdnummer/www.domain.de/dump/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
?>

funktioniert das Erstellen des Dumps und das Speichern im WebspaceVerzeichnis:
....was mir noch fehlt, ist der Mail Versand...des Dumps...

Kann mir jemand helfen??

Gruß
Chris

jubilee

Hallo !
Also, wenn du auf Deinem Server SMTP nutzen kannst (Unix-Server mit sendmail)
, dann kannst Du die mail() Funktion benutzen.
Sollte so gehen :
Zitat<?
$email="hier@ die Adresse.de";                                //Empfängeradresse
$titel="Hier der Betreff";                                           //Betreff
$text="Hier der Mailtext";                                        //Mailtext
$header ="From:Von@wemgesendet.de";             //Absenderadresse
$header .= "Reply-To: Die@Antwortadresse.de"; //Antwortadresse
$header .= "X-Mailer: PHPmail()";                        //Mailapplication
$header .= "Attachment:HierDerFilename";        //Anhang
$header .= "X-Priority:1";                                  //Priorität 1= hoch,2=mittel,3=gering
$header .= "Content-Type: text/html";       //Inhaltstyp
$bool=mail($email, $titel, $text, $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
?>
So ähnlich müsste es funktionieren.
Mfg
jubilee

jubilee

Hallo !
Voriges Beispiel geht so nicht (nur ohne Anhang) !
Um einen Anhang zu versenden bitte folgendes Beispiel
verwenden (geht NUR mit TEXT-Dateien als Anhang !!!)
 
Zitat<?
$boundary = strtoupper(md5(uniqid(time()))); //Boundary erzeugen
$dateiname="dump-datei"; //Hier kann ein Name für den Anhang (!) angegeben werden
$datei="/hier/pfad/zur/datei.txt";  //Dateiname mit absolutem Pfad
$datei_content = fread(fopen($datei,"r"),filesize($datei));
$email="empfänger@adresse.de"; //Empfängeradresse
$titel="Mailtest"; //Betreff der E-Mail
$text="Das hier ist ein Test"; //Mailtext/Mailbody
$header ="From:absender@adresse.de"; //Absenderadresse
$header .="\nMIME-Version: 1.0"; //Mime Header
$header .="\nContent-Type: multipart/mixed; boundary=$boundary"; //Mime Inhalts-Type und Boundary
$header .="\n\nDies ist eine mehrteilige Nachricht im MIME-Format";//Information an nicht Mime-Clients
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/html"; //Mime-Type des Mailbody's
$header .="\nContent-Transfer-Encoding: 8bit"; //Transfer Encodierung NUR TEXT !!!
$header .="\n\n$text"; //Mailbody senden
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/plain"; //Mine-Type desr Dateianhanges
$header .="\nContent-Transfer-Encoding: 8bit";//Transfer Encodierung NUR TEXT !!!
$header .="\nContent-Disposition: attachment; filename=\"$dateiname\"";//Anhang spezifizieren
$header .="\n$datei_content"; //Anhang Inhalt
$header .="\n--$boundary--"; //Ende des Headers
$bool=mail($email, $titel,"" , $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
?>
MfG
jubilee

P.S Andere Anhänge gehen natürlich auch, aber dafür müssen das Transfer-encoding
und der Mime Inhaltstyp angepasst werden. Ausserdem muss bei Binärdateien noch
eine Codierung vorgenommen werden.


[Editiert am 22/11/2002 von jubilee]

Chrisoffstormydays

Hi Jubilee,

erstmal super vielen Dank für deine Mühe!

Ich bin leider erst gerade eben dazu gekommen,..das Script auszuprobieren.

Ich habs als mail.php abgespeichert in einem paswortgeschütztem Verzeichnis, in dem ich die Dumps als txt file erstellen lasse.....

Lediglich bei

>>$datei="/hier/pfad/zur/datei.txt"; //Dateiname mit absolutem Pfad

musste ich den relativen Pfad angeben,....aber was soll ich sagen....es funzt ohne Probleme....

Nochmal Dank für deine Arbeit,

Gruß
Chris

soxin

könnt ihr das im gesammten nochmal hier hinschreiben .. hääte das auch gern ..
aber kapier nicht wie und wo ich das einbauen muß?!!?

HÄ??

jubilee

Hallo soxin
Na eigentlich ganz einfach.
Der Chris... hat ein kleines Script um einen Dump von seiner Datenbank zu ziehen.
Ich hab Ihm dafür ein kleines Script zum Versand per Mail geschrieben.
Nun brauchst Du die beiden nur zusammenkopieren und unter einem
IrgendeinenDateinamen.php zu speichern. In dein Webverzeichnis kopieren
Variablen anpassen.
Und dann kannst Du das über den Browser ausführen.
Also :
 
Zitat<?php //erst chris... Script
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h ihr.datenbankserver.de DATENBANKNAME > /is/htdocs/kdnummer/www.domain.de/dump/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
//Dann kommt der Rest
$boundary = strtoupper(md5(uniqid(time()))); //Boundary erzeugen
$dateiname="dump-datei"; //Hier kann ein Name für den Anhang (!) angegeben werden
$datei="/hier/pfad/zur/datei.txt"; //Dateiname mit absolutem Pfad
$datei_content = fread(fopen($datei,"r"),filesize($datei));
$email="empfänger@adresse.de"; //Empfängeradresse
$titel="Mailtest"; //Betreff der E-Mail
$text="Das hier ist ein Test"; //Mailtext/Mailbody
$header ="From:absender@adresse.de"; //Absenderadresse
$header .="\nMIME-Version: 1.0"; //Mime Header
$header .="\nContent-Type: multipart/mixed; boundary=$boundary"; //Mime Inhalts-Type und Boundary
$header .="\n\nDies ist eine mehrteilige Nachricht im MIME-Format";//Information an nicht Mime-Clients
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/html"; //Mime-Type des Mailbody's
$header .="\nContent-Transfer-Encoding: 8bit"; //Transfer Encodierung NUR TEXT !!!
$header .="\n\n$text"; //Mailbody senden
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/plain"; //Mine-Type desr Dateianhanges
$header .="\nContent-Transfer-Encoding: 8bit";//Transfer Encodierung NUR TEXT !!!
$header .="\nContent-Disposition: attachment; filename=\"$dateiname\"";//Anhang spezifizieren
$header .="\n$datei_content"; //Anhang Inhalt
$header .="\n--$boundary--"; //Ende des Headers
$bool=mail($email, $titel,"" , $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
Aber denk dran: die Variablen an deine Gegebenheiten anpassen !!!
MfG
jubilee