Script, dass Mail versickt, wenn dieses gewünscht ist...

Bash, Shell, PHP, Python, Perl, CGI
Anonymous

Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by Anonymous »

Hi und Hallo,

ich suche ein Script, dass eine Datenbankabfrage macht und zu einem gewünschten Termin eine Mail verschickt. Das kann man ja ohne Probleme auch mit einem Cronjob machen, aber ich hätte es gerne folgenden maßen:

Ein Cronjob soll das Script mail.php4 jeden Tag aufrufen.

Dieses Script soll dann eine Datenbankabfrage machen und fals erforderlich eine Mail verschicken.

Ob es erforderlich ist, soll dann in der Datenbank stehen (Datum).

Beispiel:

Datum /Message /Mail

24.08.2003 /Hallo, bitte einkaufen! /astrid@wmws.de

So, wenn nun das Script aufgerufen wird und es ist der 24.08.2003 so soll die Mail mit der Message an astrid@wmws.de geschickt werden.

Hat jemand sowas vielleicht schon mal gemacht oder kann mir so ein Script mal posten?

Vielen vielen Dank und noch einen schönen Sonntag;

Astrid
darkspirit
Posts: 553
Joined: 2002-10-05 16:39
Location: D'dorf

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by darkspirit »

Das kannst du denke ich auch selbst ;)
Schau dir mal die Funktion "date" von PHP an. Am besten speicherst du das gewünschte Datum zum Verschicken der Mail als Timestamp in der Datenbank, den du zu jedem beliebigen Datum mit genannter Funktion erzeugen kannst.
Bei der Abfrage selbst vergleichst du einen aktuellen Timestamp (mit "time()") mit dem gespeicherten Wert. Wenn der aktuelle Timestamp größer ist als der in der Datenbank, schicke die Mail ab.. Natürlich muss entweder der Datenbankeintrag dann gelöscht werden oder ein neues Datum eingetragen werden, sonst wird die Mail einen Tag später wieder verschickt ;)
Anonymous

...

Post by Anonymous »

Schönen guten Abend,

erst mal vielen Dank für die Hilfestellung, aber leider muß ich dich enttäuschen.

Wenn ich sowas selber hinbekommen würde, würde ich mein Problem ja nicht posten.

Ich habe wirklich nicht so viel Ahnung von PHP, da ich mich bis jetzt nur mit anderen Scriptsprachen beschäftigt habe.

Schönen Abend noch;

Astrid
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by arty »

Hallo Astrid,

kannst du das dann nicht mit den anderen Skriptsprachen realisieren, die du beherrscht?

bye
arty
Anonymous

...

Post by Anonymous »

Hi,

also mit pascal oder pearl, cgi ist es wohl etwas komplizierter als mit php, so wurde mir jedenfalls gesagt.

PHP soll in diesen Dingen wohl doch viel einfacher sein und ausserdem bin ich ja zurzeit dabei, PHP zu lernen.

MfG;

Astrid
[nix]pepe
Userprojekt
Userprojekt
Posts: 244
Joined: 2003-04-08 19:36

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by [nix]pepe »

Code: Select all

$link = mysql_connect("localhost","user","pw");
$link = mysql_select_db("db_name");
$pre_sql_userdaten = mysql_query("SELECT user,pw FROM die_tabelle");

while($out_sql_userdaten = mysql_fetch_array($pre_sql_userdaten))
 {
  system("passwd ".$out_sql_userdaten["user"]." ".$out_sql_userdaten["pw"]);
 }

echo "Fertig :) Pw's sind drin :)";

Sollte passen, wenn nit verbessert mich, war nur so kurz daher getippt :)
Musst das ganze dann noch mit nem Cron auf rufen...

Code: Select all

* */1 * * * root /pfad/zur/php/bin/php /pfad/zum/script.php
MfG
Pepe
giffi
Posts: 140
Joined: 2003-05-17 14:52

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by giffi »

Hi

ich hab mich mal drangesetzt und sowas geschrieben wenn
du noch Interesse hast dann schreib mir ne PM.


Giffi
giffi
Posts: 140
Joined: 2003-05-17 14:52

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by giffi »

[NIX]Pepe wrote:

Code: Select all

$link = mysql_connect("localhost","user","pw");
$link = mysql_select_db("db_name");
$pre_sql_userdaten = mysql_query("SELECT user,pw FROM die_tabelle");

while($out_sql_userdaten = mysql_fetch_array($pre_sql_userdaten))
 {
  system("passwd ".$out_sql_userdaten["user"]." ".$out_sql_userdaten["pw"]);
 }

echo "Fertig :) Pw's sind drin :)";
Sorry aber was hat das mit dem Thema zu tun ??

Giffi
giffi
Posts: 140
Joined: 2003-05-17 14:52

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by giffi »

Hier mal mein Lösungsvorschlag:


Hiermit die passende Tabelle erstellen (phpMyAdmin oder MySql-Konsole)
"test" kann natürlich ersetzt werden.
Dann einfach die Daten einfügen (time als Unix Timestamp)
und "status" leer lassen

Code: Select all

CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`time` int(14) default NULL,
`mail` text NOT NULL,
`text` text NOT NULL,
`status` text NOT NULL,
PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

Hier das PHP-Script
sollte eigentlich selbsterklärend sein ;-)

Code: Select all

<?
$database= "";          //Datenbankname
$sqlhost= "localhost";     //mySQL Hostname (meistens "LOCALHOST")
$sqluser= "";            //mySQL Username
$sqlpass= "";           //mySQL Passwort


// Tabellennamen:
$tab1		="test";     //



$serverid  = @mysql_connect  ( $sqlhost, $sqluser, $sqlpass) or
             die ("Verbindung zur Datenbank nicht möglich !");
if (!mysql_select_db( $database))
  echo mysql_error($serverid);

$akt_time=time();

$sqlbefehl= "Select id, time, text, mail, status FROM $tab1";
		$ergebnis  = mysql_query($sqlbefehl, $serverid);
		echo mysql_error($serverid);
		while ( $anzeige = mysql_fetch_array ($ergebnis)) {
			echo $anzeige[time];
			echo "<br>";
			echo $akt_time;
		if ($anzeige[status] != "versendet" and $akt_time > $anzeige[time])
		{
		
		// Wenn Status = nicht versendet und aktuelle Zeit > Zeit aus der Datenbank ----> Mail verschicken
		
		$message="Datum:".date("d.m.Y",$anzeige[time])."   ".date("H:i:s",$anzeige[time])."n".$anzeige[text];
			mail($anzeige[mail], "Subject", $message,
     			"From: deine@mail-adressenX-Mailer: PHP/" . phpversion());
     		
     		//Status in der Datenbank auf versendet setzen, um einen doppelten Versand zu vermeiden
     		
     		$status="versendet";
     		$serverid  = mysql_connect  ( $sqlhost, $sqluser, $sqlpass);
  		echo mysql_error($serverid);
   		if (!mysql_select_db( $database))
      		echo mysql_error($serverid);
	  	$sqlbefehl2  =  "UPDATE $tab1 SET status='$status'
	 	WHERE id = $anzeige[id]";
   		if (!$ergebnis2  = mysql_query($sqlbefehl2, $serverid))
      		echo mysql_error($serverid);
      		
      		}
      		}
      		
      		?>


Giffi
[nix]pepe
Userprojekt
Userprojekt
Posts: 244
Joined: 2003-04-08 19:36

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by [nix]pepe »

shit ^^

hab war erst in dem thread mit dem Pw für die User änder und der db dazwischen mit confixx ^^ und hab mich dann verklickt und unten nur noch gelesen kann mir jemand mal was proggen, sry ^^

vielleicht kann das ja nen admin rüber schieben odda so *duck*


MfG
Pepe
Anonymous

...

Post by Anonymous »

Hi und Hallo,

erst einmal Danke giffi für dein Script!

Dazu habe ich noch mal eine Farge:

Wie soll ich den das Datum einspeichern? wenn ich das als UNIX TImestamp mache, habe ich ja nur eine Zahlencode???

Sorry, aber mit sowas kenne ich mich halt noch nicht aus!

Vielen Dank!

MfG;

Astrid
giffi
Posts: 140
Joined: 2003-05-17 14:52

Re: Script, dass Mail versickt, wenn dieses gewünscht ist...

Post by giffi »

Hi

gibst du die Daten wie Text Mail usw von Hand in die Datenbank ein oder
lässt du das auch durch ein Script machen??

Dann wärs verhältnismässig einfach:
Den code als test2.php abspeichern (oder als was du willst und dann bei
<FORM ACTION="test2.php" ändern)
und im Browser aufrufen

Code: Select all

<?
$database= "";          //Datenbankname
$sqlhost= "localhost";     //mySQL Hostname (meistens "LOCALHOST")
$sqluser= "";            //mySQL Username
$sqlpass= "";           //mySQL Passwort


// Tabellennamen:
$tab1		="test";     //



$serverid  = @mysql_connect  ( $sqlhost, $sqluser, $sqlpass) or
             die ("Verbindung zur Datenbank nicht möglich !");
if (!mysql_select_db( $database))
  echo mysql_error($serverid);
?>

<FORM ACTION="test2.php" METHOD="POST" enctype="multipart/form-data"  name="Erinnerung">
	<table width=100% border=1 cellspacing=0 cellpadding=0>
	<tr>
		<td colspan="2"><center>Hier die Ã?berschrift</td>
		<br>
	</tr>
	<tr>
		<td>Mail:</td><br>
		<td><input name="mail" type="text" value="" size="30" maxlength="30"></td><br>
	</tr>
	<tr>
		<td>Datum:</td>
		<td>Tag:<input name="tag" type="text" value="" size="2" maxlength="2"> 
		    Monat:<input name="mon" type="text" value="" size="2" maxlength="2"> 
		    Jahr:<input name="year" type="text" value="" size="2" maxlength="2"> 
		    Stunde:<input name="stunde" type="text" value="" size="2" maxlength="2">
		    Minute:<input name="min" type="text" value="" size="2" maxlength="2">
		    Sekunde:<input name="sek" type="text" value="" size="2" maxlength="2"></td>
	</tr>
	<tr>
		<td>Hier dein Text</td>
		<td><textarea rows="10" style="width:300" name="text" cols="30"></textarea></td>
	</tr>
	<tr>
		<td colspan="2">
			<center><input name="eintr" type="submit" value="Eintragen">  
		</td>
		</tr>
		</table>
</form>
<?
if ($eintr == "Eintragen") {
echo "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td>";
//Zeit in Unix-Timestamp umwandeln
$zeit= mktime($stunde,$min,$sek,$mon,$tag,$year);
$serverid  = mysql_connect  ( $sqlhost, $sqluser, $sqlpass);
  echo mysql_error($serverid);
   if (!mysql_select_db( $database))
      echo mysql_error($serverid);
	  
	 $sqlbefehl  =  "INSERT INTO $tab1
                (time,mail,text)
                VALUES ('$zeit', '$mail', '$text')";
   if (!$ergebnis  = mysql_query($sqlbefehl, $serverid)){
      echo mysql_error($serverid);
	 mysql_close($serverid);}
	 
	 else {echo "Eintrag erfolgreich";
          echo "</td> </tr> </table>";
	}
}
?>
Giffi
Anonymous

...

Post by Anonymous »

Hi,

ne, dass würde ich auf jeden Fall manuell eingeben mit phpMyAdmin!

Geht dass denn nicht manuell?

Kann man das Datum nicht einfach als Date speichern und das Script umbauen?

Vielen Dank!

MfG;

Astrid