1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/emailpoubelle_ynh.git synced 2024-09-03 18:26:29 +02:00

Debut du dev 0.4

This commit is contained in:
David 2013-11-04 19:28:30 +01:00
parent 08681ebfb6
commit 77418b9121
25 changed files with 823 additions and 68 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/postfix
/data

View file

@ -3,50 +3,74 @@
//----------------------------------------------------------- //-----------------------------------------------------------
// emailPoubelle config // emailPoubelle config
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html // Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
// Créateur : David Mercereau - david [.] mercereau [aro] zici [.] fr // Créateur : David Mercereau - david [aro] mercereau [.] info
// Home : http://poubelle.zici.fr // Home : http://poubelle.zici.fr
//----------------------------------------------------------- //-----------------------------------------------------------
error_reporting(0); //error_reporting(0);
define('DEBUG', true);
define('VERSION', '0.3');
// Domaine email // Domaine email
define('DOMAIN', 'zici.fr'); define('DOMAIN', 'zici.fr');
// Serveur DNS pour la résolution/vérification du nom de domaine // Deux options :
define('NS1', 'ns1.fdn.org'); // PLAIN : plaintext, pas de base, simple mais des fonctionnalités en moins
define('NS2', '8.8.8.8'); // DB : pdo usage
define('BACKEND', 'DB');
define('DEBUG', false); if (BACKEND == 'DB') {
// PDO stucture
// Exemple pour MYSQL :
// define('DB', 'mysql:host=127.0.0.1;dbname=baseMysql');
// define('DBUSER', 'utilisateurMysql');
// define('DBPASS', 'motdepassedefou');
// Exemple pour Sqlite :
// define('DB', 'sqlite:./data/emailPoubelle.sqlite');
define('DB', 'mysql:host=localhost;dbname=c1_demo');
#define('DB', 'sqlite:./database.sdb');
define('DBUSER', 'c1_demo');
define('DBPASS', 'sqdf2csd4rvn45548');
}
// Fichier d'alias postfix // Fichier d'alias postfix
define('FICHIERALIAS', './emailPoubelle/postfix/virtual'); define('FICHIERALIAS', './data/virtual');
define('BIN_POSTMAP', '/usr/sbin/postmap'); define('BIN_POSTMAP', '/usr/sbin/postmap');
define('URLPAGE', 'http://www.zici.fr/emailPoubelle.html'); define('URLPAGE', 'http://'.$_SERVER["SERVER_NAME"].'/'.$_SERVER["REQUEST_URI"]);
// A indiquer si vous utiliser les URL's rewriting // A indiquer si vous utiliser les URL's rewriting
// Exemple avec un htaccess // Exemple avec un htaccess
// RewriteRule ^EmailPoubell-([0-9]+)\.html$ index.php?page=emailPoubelle&Validemail=$1 [L] // RewriteRule ^EmailPoubell-([0-9]+)\.html$ folder/emailPoubelle.php?&Validemail=$1 [L]
define('URLREWRITE_DEBUT', 'http://www.zici.fr/EmailPoubell-'); //define('URLREWRITE_DEBUT', 'http://www.zici.fr/EmailPoubell-');
define('URLREWRITE_FIN', '.html'); //define('URLREWRITE_FIN', '.html');
// Désactiver // Désactiver
# define('URLREWRITE_DEBUT', false); define('URLREWRITE_DEBUT', false);
# define('URLREWRITE_FIN', false); define('URLREWRITE_FIN', false);
// - Email // - Email
// Sujet de l'email pour la confirmation // Sujet de l'email pour la confirmation
define('EMAIL_SUJET_CONFIRME', '[zici] [EmailPoubelle] Confirmation alias '); define('EMAIL_SUJET_CONFIRME', '[EmailPoubelle] Confirmation alias ');
// Sujet de l'email pour la liste des alias // Sujet de l'email pour la liste des alias
define('EMAIL_SUJET_LISTE', '[zici] [EmailPoubelle] Liste des alias '); define('EMAIL_SUJET_LISTE', '[EmailPoubelle] Liste des alias ');
// From de l'email // From de l'email
define('EMAIL_FROM', '"NO REPLAY emailPoubelle" <emailpoubelle@zici.fr>'); define('EMAIL_FROM', '"NO REPLAY emailPoubelle" <emailpoubelle@exemple.com>');
// Alisas interdit : (regex ligne par ligne) - commenter pour désactiver // Alisas interdit : (regex ligne par ligne) - commenter pour désactiver
define('ALIASDENY', './emailPoubelle/aliasdeny.txt'); define('ALIASDENY', './aliasdeny.txt');
// Blackliste d'email : (regex ligne par ligne) - commenter pour désactiver // Blackliste d'email : (regex ligne par ligne) - commenter pour désactiver
define('BLACKLIST', './emailPoubelle/blacklist.txt'); define('BLACKLIST', './blacklist.txt');
// Depend pear Net/DNS2
define('CHECKMX', false);
if (CHECKMX) {
require_once('Net/DNS2.php');
// Serveur DNS pour la résolution/vérification du nom de domaine
define('NS1', 'ns1.fdn.org');
define('NS2', '8.8.8.8');
}
?> ?>

View file

@ -3,28 +3,61 @@
//----------------------------------------------------------- //-----------------------------------------------------------
// Email Poubelle // Email Poubelle
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html // Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
// Créateur : David Mercereau - david [.] mercereau [aro] zici [.] fr // Créateur : David Mercereau - david [aro] mercereau [.] info
// Home : http://poubelle.zici.fr // Home : http://poubelle.zici.fr
// Date : 08/2013 // Date : 08/2013
// Version : 0.3 // Version : 0.4
// Dépendance : Postifx // Dépendance : Postifx
//----------------------------------------------------------- //-----------------------------------------------------------
include_once('./conf.php'); include_once('./conf.php');
define('VERSION', '0.4');
# Init & vérif //////////////////
// Init & check
//////////////////
if (DEBUG) {
error_reporting(E_ALL);
ini_set('display_errors', 'On');
echo '<div class="highlight-2">Debug activé</div>';
print_r($_REQUEST);
}
// check alias file is_writable
if (!is_writable(FICHIERALIAS)) { if (!is_writable(FICHIERALIAS)) {
exit('<div class="highlight-1">Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur</div>'); exit('<div class="highlight-1">Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur</div>');
} }
// check blacklist file is_writable
if (defined('BLACKLIST') && !is_readable(BLACKLIST)) { if (defined('BLACKLIST') && !is_readable(BLACKLIST)) {
exit('<div class="highlight-1">Erreur : un fichier de blacklist est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>'); exit('<div class="highlight-1">Erreur : un fichier de blacklist est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>');
} }
// check aliasdeny file is_writable
if (defined('ALIASDENY') && !is_readable(ALIASDENY)) { if (defined('ALIASDENY') && !is_readable(ALIASDENY)) {
exit('<div class="highlight-1">Erreur : un fichier d\'alias interdit est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>'); exit('<div class="highlight-1">Erreur : un fichier d\'alias interdit est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>');
} }
// Connect DB
if (BACKEND == 'DB') {
try {
if (preg_match('/^sqlite/', DB)) {
$dbco = new PDO(DB);
} else {
$dbco = new PDO(DB, DBUSER, DBPASS);
}
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch ( PDOException $e ) {
die('Connexion à la base '.$e->getMessage());
}
}
//////////////////
// Function
//////////////////
// Verification des emails
function VerifMXemail($email) { function VerifMXemail($email) {
require_once 'Net/DNS2.php'; if (CHECKMX) {
$domaine=explode('@', $email); $domaine=explode('@', $email);
$r = new Net_DNS2_Resolver(array('nameservers' => array(NS1, NS2))); $r = new Net_DNS2_Resolver(array('nameservers' => array(NS1, NS2)));
try { try {
@ -37,17 +70,33 @@ function VerifMXemail($email) {
} else { } else {
return false; return false;
} }
} else {
return true;
}
} }
// postmap command
function UpdateVirtualDB() { function UpdateVirtualDB() {
echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return); echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
} }
//// A FAIRE (chian) :
// add new alias
function AjouterAlias($alias,$email) { function AjouterAlias($alias,$email) {
if (BACKEND == 'DB') {
// A faire mais $alais doît changer
} else {
$fichier=fopen(FICHIERALIAS,'a+'); $fichier=fopen(FICHIERALIAS,'a+');
fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n"); fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n");
fclose($fichier); fclose($fichier);
}
UpdateVirtualDB(); UpdateVirtualDB();
} }
//// A FAIRE :
// delete new alias
function SupprimerAlias($alias,$email) { function SupprimerAlias($alias,$email) {
file_put_contents(FICHIERALIAS, preg_replace('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/)); file_put_contents(FICHIERALIAS, preg_replace('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/));
file_put_contents(FICHIERALIAS, preg_replace('#\n'.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/)); file_put_contents(FICHIERALIAS, preg_replace('#\n'.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/));
@ -55,6 +104,7 @@ function SupprimerAlias($alias,$email) {
UpdateVirtualDB(); UpdateVirtualDB();
} }
// parse file for blacklist and aliasdeny
function parseFileRegex($file, $chaine) { function parseFileRegex($file, $chaine) {
$return=false; $return=false;
$handle = fopen($file, 'r'); $handle = fopen($file, 'r');
@ -72,6 +122,7 @@ function parseFileRegex($file, $chaine) {
return $return; return $return;
} }
// Check blacklistemail
function BlacklistEmail($email) { function BlacklistEmail($email) {
if (defined('BLACKLIST')) { if (defined('BLACKLIST')) {
return parseFileRegex(BLACKLIST, $email); return parseFileRegex(BLACKLIST, $email);
@ -80,6 +131,7 @@ function BlacklistEmail($email) {
} }
} }
// check aliasdeny
function AliasDeny($alias) { function AliasDeny($alias) {
if (defined('ALIASDENY')) { if (defined('ALIASDENY')) {
return parseFileRegex(ALIASDENY, $alias); return parseFileRegex(ALIASDENY, $alias);
@ -88,6 +140,9 @@ function AliasDeny($alias) {
} }
} }
//// A FAIRE :
// list alias
function ListeAlias($email) { function ListeAlias($email) {
$handle = fopen(FICHIERALIAS, 'r'); $handle = fopen(FICHIERALIAS, 'r');
while (!feof($handle)) { while (!feof($handle)) {
@ -103,14 +158,11 @@ function ListeAlias($email) {
return ($alias); return ($alias);
} }
if (DEBUG) { //////////////////
echo '<div class="highlight-2">Debug activé</div>'; // Start program
print_r($_REQUEST); //////////////////
}
echo '<h1>Emails poubelle libre</h1>
<p>Générer des emails poubelle sans contrainte de durée de vie. </p>';
// Valid email process
if (isset($_REQUEST['Validemail'])) { if (isset($_REQUEST['Validemail'])) {
if (preg_match('/#'.$_REQUEST['Validemail'].' [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+ [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+/', file_get_contents(FICHIERALIAS),$res)) { if (preg_match('/#'.$_REQUEST['Validemail'].' [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+ [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+/', file_get_contents(FICHIERALIAS),$res)) {
$data=explode(' ', $res[0]); $data=explode(' ', $res[0]);
@ -123,6 +175,7 @@ if (isset($_REQUEST['Validemail'])) {
} else { } else {
echo '<div class="highlight-1">Erreur : ID introuvable</div>'; echo '<div class="highlight-1">Erreur : ID introuvable</div>';
} }
// list email process
} elseif (isset($_REQUEST['list'])) { } elseif (isset($_REQUEST['list'])) {
$email=strtolower($_REQUEST['email']); $email=strtolower($_REQUEST['email']);
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) { if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
@ -132,7 +185,7 @@ if (isset($_REQUEST['Validemail'])) {
} else if (!preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { } else if (!preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
echo '<div class="highlight-1">Vous n\'avez encore aucun alias d\'actif</div>'; echo '<div class="highlight-1">Vous n\'avez encore aucun alias d\'actif</div>';
} else { } else {
# Envoi de l'email récapitulatif : # send email with alias list
if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) { if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) {
$passage_ligne = "\r\n"; $passage_ligne = "\r\n";
} else { } else {
@ -147,8 +200,9 @@ if (isset($_REQUEST['Validemail'])) {
$message.= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne; $message.= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne;
$message.= "\t * ".URLPAGE.$passage_ligne; $message.= "\t * ".URLPAGE.$passage_ligne;
mail($email,EMAIL_SUJET_LISTE,$message,$header); mail($email,EMAIL_SUJET_LISTE,$message,$header);
echo '<div class="highlight-3">Un email vous a été adressé avec la liste de vos emails poubelles actifs.</div>'; echo '<div class="highlight-3">Un email vous a été adressé avec la liste de vos emails poubelles actifs.</div>';
} }
//
} elseif (isset($_REQUEST['email']) && isset($_REQUEST['alias'])) { } elseif (isset($_REQUEST['email']) && isset($_REQUEST['alias'])) {
$alias=strtolower($_REQUEST['alias']); $alias=strtolower($_REQUEST['alias']);
$email=strtolower($_REQUEST['email']); $email=strtolower($_REQUEST['email']);
@ -161,10 +215,10 @@ if (isset($_REQUEST['Validemail'])) {
} else if (AliasDeny($alias)) { } else if (AliasDeny($alias)) {
echo '<div class="highlight-1">Erreur : email poubelle interdit</div>'; echo '<div class="highlight-1">Erreur : email poubelle interdit</div>';
} else if (BlacklistEmail($email)) { } else if (BlacklistEmail($email)) {
echo '<div class="highlight-1">Erreur : vous avez été blacklisté sur ce service</div>'; echo '<div class="highlight-1">Erreur : vous avez été blacklisté sur ce service</div>';
} elseif (isset($_REQUEST['ajo'])) { } elseif (isset($_REQUEST['add'])) {
if (preg_match('#\n'.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS))) { if (preg_match('#\n'.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS))) {
echo '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>'; echo '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>';
} else { } else {
if (preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { if (preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
AjouterAlias($alias,$email); AjouterAlias($alias,$email);
@ -172,7 +226,7 @@ if (isset($_REQUEST['Validemail'])) {
} else { } else {
$id=rand().date('U'); $id=rand().date('U');
$alias_desactive='#'.$id.' '.$alias; $alias_desactive='#'.$id.' '.$alias;
AjouterAlias($alias_desactive,$email); AjouterAlias($alias_desactive,$email,0);
# Envoi de l'email : # Envoi de l'email :
if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) { if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) {
$passage_ligne = "\r\n"; $passage_ligne = "\r\n";
@ -181,7 +235,7 @@ if (isset($_REQUEST['Validemail'])) {
} }
$header = 'From: '.EMAIL_FROM.$passage_ligne; $header = 'From: '.EMAIL_FROM.$passage_ligne;
$header.= 'MIME-Version: 1.0'.$passage_ligne; $header.= 'MIME-Version: 1.0'.$passage_ligne;
$message= 'Confirmation de la création de votre redirection email poubelle : '.$passage_ligne; $message= 'Confirmation de la création de votre redirection email poubelle : '.$passage_ligne;
$message= $alias.'@'.DOMAIN.' => '.$email.$passage_ligne; $message= $alias.'@'.DOMAIN.' => '.$email.$passage_ligne;
$message= 'Cliquer sur le lien ci-dessous pour confirmer : '.$passage_ligne; $message= 'Cliquer sur le lien ci-dessous pour confirmer : '.$passage_ligne;
if (URLREWRITE_DEBUT && URLREWRITE_FIN) { if (URLREWRITE_DEBUT && URLREWRITE_FIN) {
@ -196,28 +250,35 @@ if (isset($_REQUEST['Validemail'])) {
$message.= "\t * ".URLPAGE.'?sup=true&email='.$email.'&alias='.$alias.$passage_ligne; $message.= "\t * ".URLPAGE.'?sup=true&email='.$email.'&alias='.$alias.$passage_ligne;
} }
mail($email,EMAIL_SUJET_CONFIRME.$alias,$message,$header); mail($email,EMAIL_SUJET_CONFIRME.$alias,$message,$header);
echo '<div class="highlight-2">Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.</div>'; echo '<div class="highlight-2">Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.</div>';
} }
} }
} else if (isset($_REQUEST['sup'])) { } else if (isset($_REQUEST['del'])) {
if (preg_match('#\n'.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { if (preg_match('#\n'.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
SupprimerAlias($alias,$email); SupprimerAlias($alias,$email);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.'</b> est maintenant supprimé !</div>'; echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.'</b> est maintenant supprimé !</div>';
} else { } else {
echo '<div class="highlight-1">Erreur : l\'email poubelle n\'existe pas</div>'; echo '<div class="highlight-1">Erreur : l\'email poubelle n\'existe pas</div>';
} }
} }
} }
// Close connexion DB
if (BACKEND == DB) {
$dbco = null;
}
//////////////////
// Printing form
//////////////////
?> ?>
<form action="<?= URLPAGE?>" method="post"> <form action="<?= URLPAGE?>" method="post">
<label>Nom de l'email poubelle : </label> <label>Nom de l'email poubelle : </label>
<input type="text" name="alias" size="24" border="0" /> @<?= DOMAIN; ?> <input type="text" name="alias" size="24" border="0" /> @<?= DOMAIN; ?>
<br /> <br />
<label>Votre email réel : </label> <label>Votre email réel : </label>
<input type="text" name="email" size="24" border="0" /> <input class="button" type="submit" name="list" value="Lister" /> <input type="text" name="email" size="24" border="0" /> <input class="" type="submit" name="list" value="Lister" />
<br /> <br />
<input class="button" type="submit" name="ajo" value="Créer" /> ou <input class="button" type="submit" name="add" value="Créer" /> ou
<input class="button" type="submit" name="sup" value="Supprimer" /> la redirection poubelle <input class="button" type="submit" name="del" value="Supprimer" /> la redirection poubelle
</form> </form>
<p>Version <?= VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p> <p>Version <?= VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p>
<p>Télécharger et utiliser ce script sur le site du projet <a target="_blank" href="http://forge.zici.fr/p/emailpoubelle-php/">emailPoubelle.php</a></p> <p>Télécharger et utiliser ce script sur le site du projet <a target="_blank" href="http://forge.zici.fr/p/emailpoubelle-php/">emailPoubelle.php</a></p>

192
index.php Executable file
View file

@ -0,0 +1,192 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>emailPoubelle - Template-exemple</title>
<meta charset="UTF-8">
<meta name="description" content="">
<meta name="robots" content="index,follow,noarchive">
<link rel="stylesheet" href="template-exemple/style.css">
<!--[if IE]><script src="template-exemple/html5-ie.js"></script><![endif]-->
</head>
<body>
<!--[if lte IE 6]>
<div class="alert-ie6" style="padding: 1em; background: #900; font-size: 1.1em; color: #fff;">
<p><strong>Attention ! </strong> Votre navigateur (Internet Explorer 6 ou 7) présente de sérieuses lacunes en terme de sécurité et de performances, dues à son obsolescence (il date de 2001).<br />En conséquence, ce site sera consultable mais de manière moins optimale qu'avec un navigateur récent (<a href="http://www.browserforthebetter.com/download.html" style="color: #fff;">Internet Explorer 8</a>, <a href="http://www.mozilla-europe.org/fr/firefox/" style="color: #fff;">Firefox 3</a>, <a href="http://www.google.com/chrome?hl=fr" style="color: #fff;">Chrome</a>, <a href="http://www.apple.com/fr/safari/download/" style="color: #fff;">Safari</a>,...)</p>
</div>
<![endif]-->
<div id="a">
<header>
<a href="/" title="Startseite"><strong>OWMX-2</strong> HTML5 &amp; CSS3</a>
</header>
<div id="b">
<article>
<h1>Emails poubelle libre</h1>
<p>Générer des emails poubelle sans contrainte de durée de vie. </p>
<?php
// Intégration dans votre site :
include('emailPoubelle.php');
?>
<h3>Let the Show Begin - Pre and Code</h3>
<p>This is how it looks if you use <code>pre</code> and <code>code</code> together, for example to highlight and nicely markup a piece of code:</p>
<pre><code>pre {<br /> font-size : 12px;<br /> background : #F0F0F0;<br />}</code></pre>
<h3>Example Blockquote</h3>
<p>If you want to quote somebody, you can use this perfectly semantic example for a blockquote:</p>
<cite>Jonas Jacek</cite>
<blockquote cite="http://www.rield.com/">
During my years in the Internet Marketing business I have seen and done many things I never thought would be of interest to me or anyone else.
</blockquote>
<h3>Examples Alerts, Notice &amp; Confirmation</h3>
<p>These sample styles for alerts and notices are useful if you want to use the template in content management systems.</p>
<p class="highlight-1"><strong>Alert:</strong> This is how an alert looks like.</p>
<p class="highlight-2"><strong>Notice:</strong> This is how a notice looks like.</p>
<p class="highlight-3"><strong>Confirmation:</strong> This is how a confirmation looks like.</p>
<h3>Example Table</h3>
<p>The following is the design for a table. The style is simple and user-friendly. Some of the effects were made with CSS3.</p>
<table>
<caption>Mini HTML5 Reference Guide</caption>
<tbody>
<tr>
<th>Tag</th>
<th>Info</th>
<th>Attributes</th>
</tr>
<tr>
<td>&lt;abbr&gt;</td>
<td>abbreviation</td>
<td>global attributes**</td>
</tr>
<tr>
<td>&lt;area&gt;</td>
<td>in an image map</td>
<td> alt, coords, href, hreflang, media, ping, rel, shape, target, type</td>
</tr>
<tr>
<td>&lt;article&gt;</td>
<td>article/ content</td>
<td>global attributes**</td>
</tr>
<tr>
<td>&lt;aside&gt;</td>
<td>sidebar</td>
<td>global attributes**</td>
</tr>
<tr>
<td>&lt;audio&gt;</td>
<td>sound content</td>
<td>autobuffer, autoplay, controls, loop, src</td>
</tr>
<tr>
<td>&lt;b&gt;</td>
<td>bold text</td>
<td>global attributes**</td>
</tr>
</tbody>
</table>
<h3>Example hCalendar</h3>
<p>The following is a definition list in combination with the hCalendar microformat. </p>
<dl class="vevent">
<dt class="dtstart"><abbr title="2010-11-18" class="dtstart">11-18-2010</abbr></dt>
<dd class="summary">Conference Name</dd>
<dd><a href="#" class="url">http://www.conference-website.com/</a></dd>
<dd class="description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec eleifend diam. Fusce lobortis odio ac sem scelerisque sed iaculis purus ornare.</dd>
</dl>
<h3>Example Video</h3>
<p>You can put your Video-Files here...</p>
<video src="movie.ogg" controls>your browser does not support the video tag</video>
<h3>Example Audio</h3>
<p>You can put your Audio-Files here...</p>
<audio src="file.ogg" controls>your browser does not support the audio tag</audio>
<h3>Example Lists</h3>
<p>Two different kinds of lists were styled: Ordered lists (ol) and unordered (ul) lists.</p>
<ol>
<li>This is</li>
<li>The Ordered</li>
<li>Listing</li>
</ol>
<ul>
<li>This is</li>
<li>The Unordered</li>
<li>Listing</li>
</ul>
<h3>Example Form</h3>
<p>This is how a form will look like in this template.</p>
<form action="#">
<label>Name</label>
<input name="#" type="text" value="Your Name">
<label>Email</label>
<input name="#" type="text" value="Your Email">
<label>Your Comments</label>
<textarea>This is a Comment...</textarea>
<br>
<input class="button" type="submit">
</form>
<section class="meta">
<p>Author: <a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a> | Date: 2010-01-21 | Comments: <a href="#">7</a></p>
<p>Tags: <a href="#" rel="tag">quisquam</a>, <a href="#" rel="tag">Tags</a>, <a href="#" rel="tag">dolorem</a> <a href="#" rel="tag">Tags</a>, <a href="#" rel="tag">Tags</a></p>
</section>
</article>
<aside>
<h4>Search</h4>
<form action="#" class="s">
<input name="search" type="text" value="Type term and hit enter...">
</form>
<h4>About the Author</h4>
<div id="c">
<img src="template-exemple/jonas-jacek.png" alt="Jonas Jacek">
<p>Hi, my name is <a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a>.<br> Welcome to my new HTML5 / CSS3 blog.</p>
<p>I am a web designer, web developer and Internet marketing enthusiast.</p>
<p>I strongly believe in open-source software and open standards.</p>
</div>
<nav>
<h4>Navigation</h4>
<ul>
<li><a href="#">Lorem</a></li>
<li><a href="#">Ipsum</a></li>
<li class="active"><a href="#">Dolor Sit</a>
<ul>
<li><a href="#">Amet</a></li>
<li><a href="#">Amet</a></li>
</ul>
</li>
<li><a href="#">Downloads</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<h4>Example Gallery</h4>
<ul class="gallery">
<li><a href="index.html"><img src="template-exemple/img1.png"/></a></li>
<li><a href="index.html"><img src="template-exemple/img2.png"/></a></li>
<li><a href="index.html"><img src="template-exemple/img3.png"/></a></li>
</ul>
<ul class="gallery">
<li><a href="index.html"><img src="template-exemple/img4.png"/></a></li>
<li><a href="index.html"><img src="template-exemple/img5.png"/></a></li>
<li><a href="index.html"><img src="template-exemple/img6.png"/></a></li>
</ul>
<h4>AdSpace</h4>
<div class="adspace">
<a href="http://www.jabz.biz/" rel="me"><img src="template-exemple/jabz-logo.png" alt="Jabz Internet Marketing GmbH" title="Jabz Internet Marketing GmbH"/></a>
</div>
<h4>Example Blogroll</h4>
<ul>
<li><a href="http://www.jabz.biz/">Jabz Internet Marketing GmbH</a></li>
<li><a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a></li>
<li><a href="http://www.w3.org/">World Wide Web Consortium</a></li>
<li><a href="http://www.getfirefox.com/">Firefox Web Browser</a></li>
</ul>
<h4>Example Tag Cloud</h4>
<ul id="tagcloud">
<li class="tagcloudsize-1"><a href="#">Lorem</a></li>
<li class="tagcloudsize-2"><a href="#">Ipsum</a></li>
<li class="tagcloudsize-3"><a href="#">Dolor</a></li>
<li class="tagcloudsize-2"><a href="#">Sit Amet</a></li>
<li class="tagcloudsize-1"><a href="#">Consectetur</a></li>
</ul>
</aside>
</div>
<footer>
<p>Template Design &amp; Markup by <a href="http://www.jabz.info/contact/jonas-jared-jacek/" title="Profile of Jonas Jacek">Jonas Jacek</a> for <a href="http://www.owmx.com/" title="Free HTML5 &amp; CSS3 Web Template | owmx.com">Free HTML5 &amp; CSS3 Web Templates</a>.</p>
</footer>
</div>
</html>

BIN
template-exemple/ai1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

BIN
template-exemple/ai2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

BIN
template-exemple/ai3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

BIN
template-exemple/ai4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

BIN
template-exemple/ai5.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

BIN
template-exemple/ai6.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

BIN
template-exemple/ai7.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

BIN
template-exemple/ai8.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

BIN
template-exemple/hd.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View file

@ -0,0 +1,10 @@
document.createElement("header");
document.createElement("footer");
document.createElement("section");
document.createElement("aside");
document.createElement("nav");
document.createElement("article");
document.createElement("figure");
document.createElement("figcaption");
document.createElement("hgroup");
document.createElement("time");

BIN
template-exemple/image-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

BIN
template-exemple/img1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
template-exemple/img2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
template-exemple/img3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
template-exemple/img4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
template-exemple/img5.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
template-exemple/img6.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
template-exemple/jabz-logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
template-exemple/jonas-jacek.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,34 @@
####################################################
# License #
####################################################
This W3C-compliant, CSS-based website template has a
Creative Commons Attribution-Share Alike 3.0
Unported License.
>> http://creativecommons.org/licenses/by-sa/3.0/
####################################################
# What You Can Do #
####################################################
Feel free to remix, copy, distribute and transmit
this template. All I ask is that you keep the
footer links in the template intact. Also, if you
alter, transform, or build upon this work, you
may distribute the resulting work only under the
same, similar or a compatible license.
####################################################
# Feedback & Action #
####################################################
I'd love to get your feedback on the template.
Please contact me with your critics, ideas, etc.
>> http://www.jabz.info/contact/jonas-jared-jacek/
If you like to contribute your remix, I will be
more than happy to put your version on owmx.com
and credit you in http://www.owmx.com/credits/.

432
template-exemple/style.css Normal file
View file

@ -0,0 +1,432 @@
/*==================================================
Template: OWMX-2
Resource: http://www.owmx.com/
Version: 1.0
Date: 2010-09-13
Editor: Jonas Jacek
License: CC Attribution-Share Alike 3.0 Unported
==================================================*/
/* Reset */
header, footer, article, nav, section, aside, time, hgroup {
display : block;
}
html, body, header, footer, article, nav, section, aside, time, h1, h2, h3, p, a, ul, li, dl, dd, dt, table, thead, tfoot, tbody, th, tr, td {
border : 0;
font : 12px/22px Verdana, sans-serif;
margin : 0;
outline : 0;
padding : 0;
}
/* BASICS */
BODY {
background : #FFF;
border-top : 5px solid #FFF;
color : #444;
}
A {
color : #0A647C;
text-decoration : none;
}
A:HOVER {
color : #DB0202;
}
H1, H3, H4, H5, H6 {
background : url(../i/ai4.png) no-repeat 0 7px;
border-bottom : 1px dotted #B5B3A9;
color : #333;
font-weight : bold;
margin : 0 0 10px;
padding : 0 0 0 25px;
}
H1 {
background : url(../i/ai4.png) no-repeat 0 6px;
font-size : 15px;
}
H2 {
font-size : 14px;
margin : 0 0 20px 0;
}
H3 {
background : url(../i/ai5.png) no-repeat 0 7px;
}
H3, H4, H5, H6 {
font-size : 13px;
}
SUP {
top : -4px;
}
/* Header */
header {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
background : #006699 url(../i/hd.jpg) no-repeat top left;
margin : 0 0 10px 0;
padding : 10px 10px;
position : relative;
}
header a {
color : #FFF;
font-size : 16px;
}
header a:hover {
color : #FFF;
}
/* Article */
article {
border-left : 1px dotted #666;
float : right;
height : auto;
padding : 0 0 0 20px;
width : 560px;
}
article p {
margin : 0 0 20px 0;
}
article img {
float : left;
margin : 6px 10px 0 0;
}
/* Highlighted Paragraphs */
.highlight-1, .highlight-2, .highlight-3 {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
padding : 5px 10px;
}
.highlight-1 {
background : #FFCCCC;
border : 1px dotted #FF9966;
}
.highlight-2 {
background : #FFFF99;
border : 1px dotted #FFCC33;
}
.highlight-3 {
background : #CCFF99;
border : 1px dotted #CCCC33;
}
/* Citations & Quotes */
cite {
border-left: 2px solid #006699;
color : #666;
font-size : 10px;
font-style : normal;
font-weight : bold;
margin : 0;
padding : 5px 10px;
}
blockquote {
border-left: 2px solid #006699;
color : #666;
margin : 0 0 20px 0;
padding : 5px 10px;
}
/* Pre & Code */
pre {
color : #333;
font-size : 10px;
line-height : 15px; /*--Height of each line of code--*/
overflow : hidden; /*--If the Code exceeds the width, put "auto" and scrolling is available--*/
overflow-Y : hidden; /*--Hides vertical scroll created by IE--*/
}
pre code {
background : #EEE;
border-left : 2px solid #006699;
margin : 0 0 10px 0;
padding : 5px;
display : block;
}
/* Table */
table {
border-collapse : collapse;
text-align:left;
margin : 0 0 20px 0;
}
caption {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
background : #006699;
color : #FFF;
font-weight : bold;
}
tr:nth-child(odd) {
background : #FFF;
}
tr:nth-child(even) {
background : #DDD;
}
tr:hover td {
color : #006699;
}
td, th {
min-width : 120px;
padding : 0 5px;
vertical-align:top;
}
th {
background : #FFF;
border-bottom : 2px solid #006699;
color : #666;
font-size : 10px;
font-weight : bold;
}
td {
border-bottom : 1px solid #CCC;
font-size : 10px;
}
/* Calendar */
dl.vevent {
margin : -20px 0 20px 0;
padding : 0;
}
.vevent dt {
font-size : 10px;
position : relative;
left : 0;
top : 22px;
font-weight : bold;
}
.vevent dd
{
border-left : 2px solid #006699;
font-size : 11px;
margin : 0 0 0 80px;
padding : 0 0 0 10px;
}
dd.summary {
font-weight : bold;
}
.vevent a {
font-size : 11px;
}
/* Forms */
article form {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
background : #DDD;
margin : 0 0 20px;
padding : 10px;
}
article label {
color : #666;
display : block;
font-size : 10px;
font-weight : bold;
margin : 0 0 0 2px;
}
article input, article textarea {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border : 1px solid #CCC;
font-size : 11px;
padding : 4px 5px;
width : 458px;
}
article input {
margin : 0 0 10px;
}
article input.button, .btn {
background: #999;
border : 1px solid #888;
color: #FFF;
cursor : pointer;
font-weight : bold;
margin : 10px 0 0 0;
text-shadow : 0 -1px 1px rgba(0,0,0,0.25);
width : 25%;
}
article textarea {
height : 100px;
}
/* Lists */
article ul, aside ul {
list-style : none;
margin : 0 0 20px 0;
}
article ul {
margin : 0 0 20px 23px;
}
article ul li {
background : url(../i/ai2.png) no-repeat 0 8px;
padding : 0 0 0 17px;
}
/* Sidebar */
aside {
float : left;
margin : 0 0 20px 0;
width : 200px;
}
/* Search Box */
.s {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
margin : 0 0 20px 0;
padding : 10px;
width : 179px;
}
.s input {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border : 1px solid #CCC;
color : #999;
font-size : 11px;
padding : 4px 5px;
width : 168px;
}
/* Navigation & Menu */
nav ul {
list-style : none;
}
nav li {
background : url(../i/ai1.png) no-repeat 0 8px;
padding : 0 0 0 15px;
}
nav li ul, aside li ul li ul {
margin : 0;
}
nav li li a {
font-size : 11px;
}
nav li li li a {
font-size : 10px;
}
nav li li li, aside li.active li li {
background : url(../i/ai8.png) no-repeat 0 10px;
}
nav li.active, aside li.active li {
background : url(../i/ai2.png) no-repeat 0 8px;
}
/* Gallery */
.gallery {
list-style : none;
margin : 0 0 10px;
}
.gallery li {
display: inline;
margin : 0 15px 0 0;
}
.gallery a img {
border : 1px solid #999;
height : 50px;
opacity: 0.8;
padding : 1px;
width : 50px;
}
.gallery li:last-child {
margin : 0 0 10px 0;
}
.gallery a img:hover{
opacity: 1;
}
/* Ad Space */
.adspace {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
-moz-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
-webkit-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
background : #EEE;
height : 100%;
margin : 0 0 20px 0;
padding : 5px 10px;
text-align : center;
width : 178px;
}
.adspace a img {
border : none;
}
/* Tag Cloud */
#tagcloud {
overflow : hidden;
width : 200px;
}
#tagcloud li {
display : inline;
margin : 0 10px 0 0;
}
.tagcloudsize-1 a {
font-size : 14px;
}
.tagcloudsize-2 a {
font-size : 16px;
}
.tagcloudsize-3 a {
font-size : 18px;
}
/* Footer */
footer {
border-top : 1px dotted #B5B3A9;
clear : both;
margin : 20px 0;
}
footer a, footer p {
color : #666;
display : inline;
font-size : 10px;
}
/* Wrappers */
#a, #b {
margin : 0 auto;
position : relative;
}
#a {
width : 800px;
}
#b {
overflow : hidden;
}
/* Shadow-Boxes*/
#c, .meta, .s {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
-moz-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
-webkit-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
background : #EEE;
}
#c {
background : #EEE;
margin : 0 0 20px 0;
padding : 5px 10px;
width : 178px;
}
#c p, #c a {
font-size : 11px;
line-height : 15px;
}
#c p {
margin : 0 0 10px 0;
}
#c img {
float : left;
margin : 4px 10px 2px 0;
}
.meta {
margin : 20px 0 3px;
padding : 2px 5px;
}
.meta p, .meta a {
font-size : 10px;
margin : 0;
}