Rechtlicher Hinweis: Bitte beachten Sie die einschlägigen für Ihr Land geltenden Gesetze, bitte fragen Sie Ihren Rechtsanwalt oder eine andere Rechtskundige Stelle
- Seitenzugriffe zählen
- Emails nach Anzahl von Seitenzugriffe versenden, jedoch mit Reloadsperre
- Wenn alle E-Mails versendet Script abbrechen
- E-Mail Adresse aus Datei holen, Datensatz löschen und Checken ob E-Mail Adresse halbwegs korrekt ist
- Check ob E-Mail doppelt vorhanden ist, dann nicht senden
- E-Mail senden, und gesendete E-Mails in separate Zähldatei
Quellcode PHP Programm
<!DOCTYPE HTML>
<html>
<head>
<title>E-Mail | Ihr Super Angebot - jetzt zugreifen</title>
<!-- Auf welche Seite verweist dieses Email-Liste -->
<link rel="canonical" href="http://www.example.com/super-angebot.html" />
<!-- Der Autor dieses Programms -->
<link href="https://plus.google.com/105065516716852340832" rel="author" />
<!--
Wenn ein automatischer Reload erfolgen soll, damit die E-Mails schneller versendet werden, Zeitangabe in Sekunden
<meta http-equiv="refresh" content="600; URL= http://www.example.com/tools/email-senden.php?zaehler=nochma l">
-->
</head>
<body>
<?php
//////////////////////////////////////////////////////////////////////////////////
// error reporting, wahlweise schaltet
// Error Reporting komplett abschalten
error_reporting(0);
// Nur einfache Fehler melden
// error_reporting(E_ERROR | E_WARNING | E_PARSE);
// E_NOTICE ist sinnvoll um uninitialisierte oder falsch geschriebene Variablen zu entdecken
// error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Melde alle Fehler außer E_NOTICE
// error_reporting(E_ALL & ~E_NOTICE);
// Melde alle PHP Fehler (siehe Changelog)
// error_reporting(E_ALL);
// Melde alle PHP Fehler
// error_reporting(-1);
// Dies entspricht error_reporting(E_ALL);
// ini_set('error_reporting', E_ALL);
//////////////////////////////////////////////////////////////////////////////////
// allgemeine variablen und einstellungen
//////////////////////////////////////////////////////////////////////////////////
// Lösche IP Sperrdatei
if ($_GET[zaehler]=='nochmal'){
unlink($_SERVER['DOCUMENT_ROOT'].'/tools/ips.txt');
sleep (3); //3 sekunden pause
clearstatcache();
};
//////////////////////////////////////////////////////////////////////////////////
// PROG 1 - Zähler und Reloadsperre
/////////////////////////////////////////
// Counter + Reloadsperre
/////////////////////////////////////////
// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 300;
// IP-Datei
$ipdatei = $_SERVER['DOCUMENT_ROOT'].'/tools/ips.txt';
// Counterdatei
$counterdatei = $_SERVER['DOCUMENT_ROOT'].'/tools/sendmail.txt';
// Anzahl der führenden Nullen
$stellen = 8;
/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////
function pruf_IP($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++) {
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)) {
if ($ip_addr == $rem_addr) {
$gefunden=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}
//////////////////////////////////////////////////////////////////////////////////
// Counter-Abfrage Test auf Cookie
//////////////////////////////////////////////////////////////////////////////////
if (file_exists($counterdatei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Falls die Datei existiert, wird sie ausgelesen und
// der dort enthaltene Wert um Eins erhöht.
$fp=fopen($counterdatei,"r+");
$zahl=fgets($fp,$stellen);
if ($_GET[zaehler]!='nochmal') $zahl++; //wenn selbst aufrufe, kein zähler hochzählen
rewind($fp);
flock($fp,LOCK_EX);
fputs($fp,$zahl,$stellen);
sleep(1);
flock($fp,LOCK_UN);
fclose($fp);
$sendmail='true'; // parameter, ob email gesendet werden darf
}else if (!file_exists($counterdatei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['REMOTE_ADDR'])==0))) {
// Die Datei counter.txt existiert nicht, sie wird
// neu angelegt und mit dem Wert 1 gefüllt.
$fp=fopen($counterdatei,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
$sendmail='true'; // parameter, ob email gesendet werden darf
} else {
// Die Datei existiert zwar, jedoch handelt
// es sich wahrscheinlich um den gleichen Besucher
$fp=fopen($counterdatei,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
$sendmail='false'; // parameter, ob email gesendet werden darf
$error='54TR';
};
$var=sprintf("%0".$stellen."d",$zahl);
echo'<p align="center"><font size="-2">(1) '.$var.'</font></p>'; //zähler anzeigen
unset($fp,$zahl);
//////////////////////////////////////////////////////////////////////////////////
// Abbruch, wenn E-Mail Datei leer ist
//////////////////////////////////////////////////////////////////////////////////
$emailcsv = $_SERVER['DOCUMENT_ROOT'].'/tools/email.csv';
$dateigroesse=filesize ($emailcsv);
if($dateigroesse==0)
{
//echo'<h5>Keine E-Mail Adresse mehr vorhanden</h5>';
//exit(0); // exit - komplette bearbeitung beenden, geht schnell, auch kein emailzähler mehr
$sendmail='false';
$error='Dateigroesse = 0, 564GF';
};
//////////////////////////////////////////////////////////////////////////////////
// PROG 2 - E-Mail Adresse einlesen und kontrollieren $sendmail true|false
//////////////////////////////////////////////////////////////////////////////////
// csv – Datei, erster Datensatz einlesen, und löschen
//////////////////////////////////////////////////////////////////////////////////
if ($sendmail=='true'){ //a1
//////////////////////////////////////////////////////////////////////////////////
// Schleifen Start, maximal 25 senden
//////////////////////////////////////////////////////////////////////////////////
for ($i = 1; $i <= 25; $i++) { //a2
//echo $i; //anzeige zählerstand
unset($doppelteemail); //da email bearbeitet wurde, kann die nächste ran
//zeile als datei holen, es sollte eine email adresse sein
$emailcsv = $_SERVER['DOCUMENT_ROOT'].'/tools/email.csv';
$fp = fopen ( $emailcsv, 'r' );
$dateihandle = fopen($emailcsv,"r");
$emailadresse = fgets($dateihandle, 1024);
//echo $emailadresse; // test, anzeige gelesene zeile, email adresse
fclose($emailcsv);
$file = $emailcsv;
$zeile = 0;
$datei = file($file);
unset($datei[$zeile]); //zeile löschen, damit nichts doppelt gesendet wird
$speichern = fopen($file, "w");
fputs($speichern, implode("", $datei));
fclose($speichern);
//////////////////////////////////////////////////////////////////////////////////
// Kontrollieren ob die email adresse nochmals vorhanden ist
//////////////////////////////////////////////////////////////////////////////////
$datei = fopen($emailcsv,"r");
while(!feof($datei))
{
$zeile = fgets($datei,4096);
if (eregi ($emailadresse, $zeile))$doppelteemail='true';
}
fclose($datei);
//////////////////////////////////////////////////////////////////////////////////
// Check ob es eine Email Adresse ist
//////////////////////////////////////////////////////////////////////////////////
if (eregi('^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}', $emailadresse)){
$emailverifiziert='true';
}
else {$emailverifiziert='false'; };
//////////////////////////////////////////////////////////////////////////////////
// PROG 3 - HTML Mail aufbauen und Senden
//////////////////////////////////////////////////////////////////////////////////
// Wenn nicht doppelte Email – Email senden (HTML Format)
//////////////////////////////////////////////////////////////////////////////////
if ($doppelteemail!='true' and $emailverifiziert=='true' ){
$mailtext = '
<html>
<head>
<title>Ihr Super Angebot - jetzt zugreifen</title>
<meta name="description" content="Nervt es Sie auch, das immer mehr Kunden bei der Konkurenz einkaufen">
</head>
<body>
<p align="center">
Sollte diese E-Mail nicht korrekt angezeicht werden, klicken Sie hier <a href="http://www.example.com/super-angebot.html"> http://www.example.com/super-angebot.html</a> für die Onlineversion</p>
<br><br clear="all"/>
<h1>Nervt es Sie auch, das immer mehr Kunden bei der Konkurenz einkaufen</h1>
<p>Text Ihrer Email</p>
<p>Text Ihrer Email</p>
<h3>Unter <a href="http://www.example.com/super-angebot.html">www.example.com/super-angebot.html</a> finden Sie folgende Informationen</h3>
<ul>
<li>Beispiel eines Konkurenten</li>
<li>Hier finden Sie ....</li>
<li>...</li>
<li><b>Fett geschriebene Aufzählung</b></li>
<li>...</li>
</ul>
<p align="left">Jetzt Handeln uns folgende Vorteile sichern:</p>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...<br><font size="-1">Anmerkung kleiner geschrieben</font></li>
<li>...</li>
<li>...</li>
</ul>
Sämtliche Informationen finden Sie unter <a href="http://www.example.com/super-angebot.html">www.example.com/super-angebot.html</a>
<br><br clear="all"/>
<font size="-2">Diese E-Mail ist eine einmalige Aktion, Sie brauchen sich nicht Abmelden und erhalten auch keine weitere E-Mails von uns. Ihre E-Mail Adresse wurde entweder von unserem Partner XYZ-Mailversand für eine einmalige Aktion bereitgestellt, weil Sie dort angegeben hatten, das Sie ausgesuchte Partnerangebote erhalten möchten. Versender dieser E-Mail ist die Musterfirma in Musterstadt, Vertreten durch Max Mustermann, Teststr. 1, D-12345 Musterstadt. Das Vollständige Impressum finden Sie unter <a href="http://www.example.com/impressum.html">www.example.com/impressum.html</a></font>
</body>
</html>';
$empfaenger = $emailadresse; //Mailadresse
$absender = "info@example.com";
$name = 'Musterfirma'; //Absendername
$betreff = "Ihr Super Angebot - jetzt zugreifen";
$antwortan = "info@example.com";
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "From: $name <$absender>\r\n";
$header .= "Reply-To: $antwortan\r\n";
// $header .= "Cc: $cc\r\n"; // falls an CC gesendet werden soll
$header .= "X-Mailer: PHP ". phpversion();
mail( $empfaenger,
$betreff,
$mailtext,
$header);
//echo "Mail wurde gesendet!";
$zaehlemail++; //zaehler email gesendet
}
else { $error='HTML Email nicht gesendet HZ520'; };
//////////////////////////////////////////////////////////////////////////////////
// schleife ende, zähler setzten, sonst rutschen wir in spam
//////////////////////////////////////////////////////////////////////////////////
}; //a2
} //a1
//else echo 'Keine EMail gesenden! Fehler: '.$error.'<br>';
//////////////////////////////////////////////////////////////////////////////////
// Zähle E-Mails die gesendet wurden datei ausgeben
//////////////////////////////////////////////////////////////////////////////////
//echo '<h5>'.$zaehlemail.'</h5>'; // wieviel wurde gezählt
// Zaehler Datei E-Mails
$zaehleemailsdatei = $_SERVER['DOCUMENT_ROOT'].'/tools/zaehleemailsent.txt';
// Datei anlegen wenn nicht vorhanden
if (!file_exists($zaehleemailsdatei)) {
$fp=fopen($zaehleemailsdatei,"w");
$zahl=0;
fputs($fp,$zahl,$stellen);
fclose($fp);
sleep (3); // warte 3 sekunden, damit datei angelegt ist
};
//gezähle emails versendet, eintragen, ansonsten nur auslesen
if (file_exists($zaehleemailsdatei)) {
$fp=fopen($zaehleemailsdatei,"r+");
$zahl=fgets($fp,$stellen);
$zahl=$zahl+$zaehlemail;
rewind($fp);
flock($fp,LOCK_EX);
fputs($fp,$zahl,$stellen);
sleep(1);
flock($fp,LOCK_UN);
fclose($fp);
};
unset($fp);
$var=sprintf("%0".$stellen."d",$zahl);
echo'<p align="center"><font size="-2">(2) '.$var.'</font></p>'; //zähler anzeigen
?>
<!-- SCRIPT GOOGLE ANALYTICS https://www.google.com/analytics/ -->
</body>
</html>
Einbau in Ihre Homepage
Warum so kompliziert? Sie rufen die Seite einmalig auf, dann werden 25 E-Mails versendet, der nächste klickt auf die Seite, die nächste Sendung geht raus, so haben Sie eine Zeitliche Verteilung.
<iframe width="100%" height="800" src="http://www.example.com/ihr-emailsende-programm.php" frameborder="0" allowfullscreen scrolling="no"></iframe>